我想获取用户基本信息,先是用wx.login获得code,再用code获得session_key,然后小程序用wx.getUserInfo接口返回了rawData和signature、encryptedData,然而在后台通过sha1加密签名(rawData+session_key)与signature进行加密检验的时候,发现有部分用户校验失败的,经排查发现如果用户微信昵称带emoji表情符号的时候就会出问题,以前一直登录的时候不会有这种情况,我就想问一下是不是你们这边改接口导致签名所用到的参数有问题???
我再等有没有第二例反馈,如果没有就应该不是我们的问题。
你们不如自己检验一下wx.getUserInfo返回的signature和(rawData+session_key)加密的签名是不是一致再跟我说吧,我觉得绝大部分的人都没经过校验直接保存用户基本信息,因为rawData是已经包括用户除了openid、unionId、watermark外的其他用户信息,但是为了安全问题肯定是要进行校验的,难道还让开发不校验随便在前端上传这些基本信息吗?
我们也出现了这样的问题,就是rawData中的nickName有问题 导致签名不过。我在论坛搜索过了,也有不少用户反馈,但是都没有给出解决方案。求官方给出解决方案
同样出现这个问题了
我也出现这问题
我同一个用户不时出现这个问题,啥情况
大哥啊。。你们官方回答这么不严谨吗 ? 什么叫 ‘应该不是我们的问题’ ???????
我也遇到微信返回的signture和计算出来的signture不一致的情况。
不过我看了一下记录的日志,似乎是微信的session_key刷新后返回的签名就会出现这种情况。(还没最终确定是否这个触发条件)
我这边也是,用户授权之后,有些用户的头像,名字等信息还是获取不到
rawData有数据么,rawData其实可以直接用,只是不是很安全,最好校验啦,当然校验目前存在的问题官方人员也不清楚,只能说呵呵了
rawData是有数据的,只是有些用户的头像,名称,在后台显示不出。
确实不一致。真心不知道问题出在哪,字符串前前后后排查了很多次,传给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"
同样出现这种问题,用户的头像只要出现有包含🔥🔥🔥类似的emoji图标,就会导致无法存入mysql数据库,导致获取不到用户的unionid
@Can🌴
同样出现这样的问题了
是不是使用了utf8而不是utf8mb4保存的昵称,校验的时候编码不一致吧
mysql才会区分utf8与utf8mb4,java后台不会的,所以应该不是后台的问题,安卓机昨天试过,具有相同的emoji符号在后台加密没问题,目前不知道用户的机型是不是ios,反正安卓机传回来的rawData,我在日志那里复制过来后再手动自己在网上进行sha1加密,两个参数是一样的,而对不上的用户手动加密校验就是不相同
也许是同样的表情在安卓手机和苹果手机返回的rawData根本就不一样
最怕的是还要分ios的版本,都不知道怎么测试,人穷买不起iphone,以前自费买了部itouth6测试微信网页版的,自从要弄小程序后就废了,小程序不兼容ipad和itouch
rawData中包含中文时,后台生成的签名和getUserInfo返回的签名不一致,大家怎么解决的啊
你传到后台rawData有没有乱码,如果乱码就是错的了
更新情况,有些emoji表情能识别,有些就不能正常解密,目前有个用户的名称带就不行了
感谢回复,麻烦给下输入输出等信息或者log,这样我们才能查问题。
由于涉及用户隐私,所以遮住昵称和头像链接
其中wxappSignature为前端接口返回的signature,signature2为系统在后端通过sha1加密得到的signature,昵称那里显示是问号,但是这些emoji直接返回到手机是可以识别的,我可以理解为java后端能识别emoji,就是加密后校验的时候两个signature不一致
平心而论,我给你反馈问题,用贴图的,你怎么查。
平心而论,难道你们这边就不能自己测试一下,这些都是用户数据,我能够随便公开给么,现在这个问题讨论已经是公开的了,如果是正式的情况下应该是以私信的方式而不是这样公开讨论的,然而这个社区并没有私信方式
兄弟 全都是base64编码 你给个截图是准备让微信开发人员一个字母一个字母敲吗 何况微信开发人员也不一定有这么高的权限可以直接去查数据库