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


Posted in Javascript onSeptember 23, 2019

微信头像失效问题说明?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Javascript 相关文章推荐
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
Jan 14 Javascript
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
JavaScript中的parse()方法使用简介
Jun 12 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
Dec 18 Javascript
JS添加删除DIV的简单实例
Jul 08 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
Mar 13 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
Aug 25 Javascript
Vue.js进行查询操作的实例详解
Aug 25 Javascript
jquery一键控制checkbox全选、反选或全不选
Oct 16 jQuery
webpack css加载和图片加载的方法示例
Sep 11 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
Aug 26 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
Jul 14 Javascript
微信小程序如何获取用户头像和昵称
Sep 23 #Javascript
微信小程序使用蓝牙小插件
Sep 23 #Javascript
微信小程序实现蓝牙打印
Sep 23 #Javascript
微信接入之获取用户头像的方法步骤
Sep 23 #Javascript
从零搭一个自用的前端脚手架的方法步骤
Sep 23 #Javascript
layui 实现加载动画以及非真实加载进度的方法
Sep 23 #Javascript
layui加载数据显示loading加载完成loading消失的实例代码
Sep 23 #Javascript
You might like
多重?l件?合查?(一)
2006/10/09 PHP
我的论坛源代码(九)
2006/10/09 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
降低PHP Redis内存占用
2017/03/23 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
Vue组件开发初探
2017/02/14 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
python socket 聊天室实例代码详解
2019/11/14 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
好的自荐信包括什么内容
2013/11/07 职场文书
企业承诺书怎么写
2014/05/24 职场文书
国际会计专业求职信
2014/08/04 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
向女朋友道歉的话
2015/01/20 职场文书
病假条格式范文
2015/08/17 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书