小程序wx.getUserInfo接口出问题了
发布于 6 年前 作者 yuanlei 17790 次浏览 来自 问答

我想获取用户基本信息,先是用wx.login获得code,再用code获得session_key,然后小程序用wx.getUserInfo接口返回了rawData和signature、encryptedData,然而在后台通过sha1加密签名(rawData+session_key)与signature进行加密检验的时候,发现有部分用户校验失败的,经排查发现如果用户微信昵称带emoji表情符号的时候就会出问题,以前一直登录的时候不会有这种情况,我就想问一下是不是你们这边改接口导致签名所用到的参数有问题???

10 回复

是不是使用了utf8而不是utf8mb4保存的昵称,校验的时候编码不一致吧

我再等有没有第二例反馈,如果没有就应该不是我们的问题。

我这边也是,用户授权之后,有些用户的头像,名字等信息还是获取不到

rawData中包含中文时,后台生成的签名和getUserInfo返回的签名不一致,大家怎么解决的啊

@Can🌴 

同样出现这样的问题了

确实不一致。真心不知道问题出在哪,字符串前前后后排查了很多次,传给php后台的sha1签名后,就是对比不一致

openid: "oP9ym5POeHoY56HWQZTPIqMh0Z6k"
rawData: "{"nickName":"陈晓~","gender":1,"language":"zh_CN","city":"New Taipei City","province":"Taiwan","country":"China","avatarUrl":"https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq59ON4ianEib25e4hGDT1RpkuVhxhQyxhHFqm3kJnIRd8n8MbT5qFht7XS6CkpkB8Ru54QG3dLdtzA/132"}"
session_key: "MojblXMrOaWk2WxUr467rA=="
sign_str: "{"nickName":"陈晓~","gender":1,"language":"zh_CN","city":"New Taipei City","province":"Taiwan","country":"China","avatarUrl":"https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq59ON4ianEib25e4hGDT1RpkuVhxhQyxhHFqm3kJnIRd8n8MbT5qFht7XS6CkpkB8Ru54QG3dLdtzA/132"}MojblXMrOaWk2WxUr467rA=="
signature: "ee59d6848251673d9f9fa6691b5eb7df77e76730"
signature2: "79284c5a82346d42eee28382b397ad690ac16318"

我也遇到微信返回的signture和计算出来的signture不一致的情况。

不过我看了一下记录的日志,似乎是微信的session_key刷新后返回的签名就会出现这种情况。(还没最终确定是否这个触发条件)

同样出现这种问题,用户的头像只要出现有包含🔥🔥🔥类似的emoji图标,就会导致无法存入mysql数据库,导致获取不到用户的unionid

大哥啊。。你们官方回答这么不严谨吗 ? 什么叫 ‘应该不是我们的问题’ ???????

更新情况,有些emoji表情能识别,有些就不能正常解密,目前有个用户的名称带

就不行了

回到顶部