默认的头像昵称

前言

1. 情况

线上与测试环境查询消费者的时候发现有许多的灰色头像与昵称是微信用户的账户

image-20240202171259269

通过消费者账户创建代码知道,这个头像和昵称是来自微信的。

2. 问题确定

是以下:

https://api.weixin.qq.com/sns/userinfo?access_token

用这个接口获取用户信息,偶尔获得昵称是“微信用户”,大部分时候正常(微信浏览器里H5)。

在《3. 网页授权获取用户信息》里面也有调用到这个接口去获取用户信息,只是作用域是不一样的,在这里只是需要一个最基本的头像和昵称。

3. 原因

出现这个情况是因为微信对于网页授权能力进行了调整,新增了一个快照功能,对于不规范的访问时,提供快照页进行基础浏览。在这种情况下,我们通过网页授权接口获取到的微信用户信息均为虚拟数据(也就是微信用户昵称与灰头像)。

image-20240202172819421

正文

在微信开发文档网页授权开发文档里面可以看到 《这里》的返回值里面有is_snapshotuser

image-20240202173927993

我们可以对于这个值的传递来判断是否为快照模式,通过对其拦截返回状态给到前端,引导消费者去授权完整信息。

image-20240202174216074

最后

  1. is_snapshotuser不是必传,需要进行判空,在非快照模式下是没有这个数据返回的
  2. 未授权完整的消费者可以给其浏览,但是不进行创建消费者账户,只有授权完整才能体验完整的服务(下单等)。
    给其浏览,但是不进行创建消费者账户,只有授权完整才能体验完整的服务(下单等)。
  3. 服务里面是在微信用户在进行扫码登录网页服务的时候去创建消费者用户,然后返回token,可以提前拦截,不给创建消费者账户与返回token,那么这个网页就只能浏览公共信息,一些下单,查询等就自然不可用了(登录之后才能做的操作)。
Taro 是一套用于快速构建跨平台前端应用的框架,支持微信小程序、H5 和 React 等多种环境。在微信小程序中,如果你想要替换用户头像,你需要通过调用微信提供的 API 来实现。 以下是基本步骤: 1. 首先,获取用户的授权,允许小程序访问用户的个人信息,包括头像。这通常在`app.json`文件中的`permission`配置里添加`scope.userInfo`权限请求。 ```json { "permissions": { "scope.userInfo": { "desc": "获取用户信息", "needAuth": true } } } ``` 2. 当用户授权后,你可以使用`wx.getUserProfile`方法获取用户信息,其中包括头像路径。例如: ```javascript wx.getUserProfile({ success: res => { let avatarUrl = res.avatarUrl; // 这里可以保存到本地或者做其他处理 }, fail: err => { console.error('获取用户信息失败', err); } }) ``` 3. 调整用户头像需要用户手动操作,你可以提供一个界面让用户选择新的头像图片,并使用`wx.chooseImage`获取选中的图片,然后通过`wx.updateAvatarURL`更新头像: ```javascript wx.chooseImage({ count: 1, // 可选, 默认9 sizeType: ['original', 'compressed'], // 可选,分别代表原图和压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可选,可同时指定来源,优先相册 success: function(res) { let localIds = res.localIds; // 返回选定照片的本地ID列表 wx.uploadFile({ localId: localIds[0], // 提交第一个图片 isShowProgressTips: 1, success: function (uploadRes) { wx.updateAvatarURL({ url: uploadRes.file.response.url, // 新头像的服务器地址 }); } }) } }) ``` 记得处理可能出现的错误,并且遵循微信小程序的相关文档和指南,因为API可能会有版本更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值