前言
1. 情况
线上与测试环境查询消费者的时候发现有许多的灰色头像
与昵称是微信用户
的账户
通过消费者账户创建代码知道,这个头像和昵称是来自微信的。
2. 问题确定
是以下:
https://api.weixin.qq.com/sns/userinfo?access_token
用这个接口获取用户信息,偶尔获得昵称是“微信用户”,大部分时候正常(微信浏览器里H5)。
在《3. 网页授权获取用户信息》里面也有调用到这个接口去获取用户信息,只是作用域是不一样的,在这里只是需要一个最基本的头像和昵称。
3. 原因
出现这个情况是因为微信对于网页授权能力进行了调整,新增了一个快照功能,对于不规范的访问时,提供快照页进行基础浏览。在这种情况下,我们通过网页授权接口获取到的微信用户信息均为虚拟数据(也就是微信用户昵称与灰头像
)。
正文
在微信开发文档网页授权开发文档里面可以看到 《这里》的返回值里面有is_snapshotuser
我们可以对于这个值的传递来判断是否为快照模式,通过对其拦截返回状态给到前端,引导消费者去授权完整信息。
最后
is_snapshotuser
不是必传,需要进行判空,在非快照模式下是没有这个数据返回的- 未授权完整的消费者可以给其浏览,但是不进行创建消费者账户,只有授权完整才能体验完整的服务(下单等)。
给其浏览,但是不进行创建消费者账户,只有授权完整才能体验完整的服务(下单等)。 - 服务里面是在微信用户在进行扫码登录网页服务的时候去创建消费者用户,然后返回token,可以提前拦截,不给创建消费者账户与返回token,那么这个网页就只能浏览公共信息,一些下单,查询等就自然不可用了(登录之后才能做的操作)。