微信头像地址失效踩坑记附带解决方案

 更新时间:2019年09月23日 10:20:37   作者:枕邊書  
这篇文章主要介绍了微信头像地址失效踩坑记附带解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

微信头像失效问题说明?

最近工作遇到一个微信头像失效的问题,情况是这样的,我们一个h5页面在微信授权后打开,会存储微信相关昵称和头像信息,不过,我们没有保存图片到自己的服务器,而是仅仅存储微信头像地址,然而过了n多天后,用户在微信修改了自己的头像,这时候,我们的服务是无感知的,又过了n多天,用户去访问我们那个h5页面,发现自己的头像是这样的:

用户找到我们,说自己有头像呀,怎么没显示呢?
我们也反问他,是否最近改过头像呢,他说没,不过很早之前改过。

而此时就比较尴尬,用户体验超级不好。

然后我们就去查看官方文档,发现这么说的:

官方文档说明-获取用户个人信息

官方也建议自己保存下来处理。

然后我们又去google了一把,看下别人是否也被同样的问题坑过。

看来好多用户都遇到了,相关问题链接

经常看到还有人的头像时而好时而不好,那是因为

旧的头像链接失效需要一定的时间,从 CDN 节点一个一个失效。你现在访问到的应该是旧的头像链接,每次访问可能到达不同的 CDN 节点,导致时有时无。

那么如何解决这个问题呢?

我们这边也想了好多方案,我们考虑下几个方面,分两个思路

思路1: 自己本地服务保存并CDN,缺点成本有点高

思路2: 有个策略定时更新头像

  • 定期更新下头像链接,不要一直缓存着,比如在 session_key 过期时一起更新下头像链接
  • 后台服务定期检查头像链接是否过期(怎么自动判断是否过期呢,下面会详细说明)
  • 前端根据头像链接判断是否过期,过期重新授权更新头像信息

下面介绍下,怎么判断微信的头像是否过期了,经过研究发现:

正常的微信图片返回的请求信息如下:

然而异常的图片地址怎么返回的呢?

可以看下异常情况,返回的信息不一样,可以根据X-Info: notexist:-6101 判断或者 X-ErrNo: -6101 关键字

不过还有一个疑问,如果本地存储的话,还会遇到,用户修改头像后,获取的地址可能不是最新的,虽然不会显示一个特别丑陋的头像,这里怎么解决呢,这里需要产品定义个策略,哪些场景需要定期授权,重新更新头像和用户信息等等。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • javascript实现二进制、十进制、十六进制和八进制之间相互转换的方法

    javascript实现二进制、十进制、十六进制和八进制之间相互转换的方法

    JavaScript提供了多种方法进行不同进制之间的转换,包括十进制转二进制、八进制、十六进制,以及二进制、八进制、十六进制之间的相互转换,通过使用Number.prototype.toString()和parseInt()函数,可以实现这些转换,需要的朋友可以参考下
    2025-02-02
  • 模拟javascript中的sort排序(简单实例)

    模拟javascript中的sort排序(简单实例)

    下面小编就为大家带来一篇模拟javascript中的sort排序(简单实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • layer关闭弹出窗口触发表单提交问题的处理方法

    layer关闭弹出窗口触发表单提交问题的处理方法

    今天小编就为大家分享一篇layer关闭弹出窗口触发表单提交问题的处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 详解JS函数stack size计算方法

    详解JS函数stack size计算方法

    本篇文章给大家分享了关于JS函数中stack size计算方法的相关知识点,对此有需要的朋友可以跟着学习下。
    2018-06-06
  • javascript中比较字符串是否相等的方法

    javascript中比较字符串是否相等的方法

    使用js比较字符串是否相等的方法有很多,在本文为大家介绍一个从外国网站看到的方法,感兴趣的朋友可以参考下哈,希望对大家学习js有所帮助
    2013-07-07
  • 捕获未处理的Promise错误方法

    捕获未处理的Promise错误方法

    下面小编就为大家带来一篇捕获未处理的Promise错误方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 微信小程序iBeacon测距及稳定程序的实现解析

    微信小程序iBeacon测距及稳定程序的实现解析

    这篇文章主要介绍了微信小程序iBeacon测距及稳定程序的实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • javascrit中undefined和null的区别详解

    javascrit中undefined和null的区别详解

    这篇文章主要介绍了javascrit中undefined和null的区别详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • JavaScript本地数据存储sessionStorage与localStorage使用详解

    JavaScript本地数据存储sessionStorage与localStorage使用详解

    这篇文章主要介绍了JavaScript本地数据存储sessionStorage与localStorage使用,localStorage:永久存储在本地,适合保存在本地的数据。sessionStorage:会话级的存储,敏感帐号一次登陆
    2022-10-10
  • js实现网页抽奖实例

    js实现网页抽奖实例

    这篇文章主要介绍了js实现网页抽奖的方法,实例分析了javascript随机数及时间函数的相关使用技巧,非常简单实用,需要的朋友可以参考下
    2015-08-08

最新评论