收藏
回答

小程序wx.getUserInfo接口出问题了

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug wx.getUserInfo 微信iOS客户端 6 1.6.0

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




回答关注问题邀请回答
收藏

10 个回答

  • 刘晓兵
    刘晓兵
    2018-07-26

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

    2018-07-26
    赞同 6
    回复
  • 新星
    新星
    2018-12-12

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

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

    2018-12-12
    赞同 2
    回复
  • Can🌴
    Can🌴
    2018-07-26

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

    2018-07-26
    赞同
    回复 5
    • 新😹 😂 👿 👾 (๑'ᴗ'๑)
      新😹 😂 👿 👾 (๑'ᴗ'๑)
      2018-07-26

      你们不如自己检验一下wx.getUserInfo返回的signature和(rawData+session_key)加密的签名是不是一致再跟我说吧,我觉得绝大部分的人都没经过校验直接保存用户基本信息,因为rawData是已经包括用户除了openid、unionId、watermark外的其他用户信息,但是为了安全问题肯定是要进行校验的,难道还让开发不校验随便在前端上传这些基本信息吗?

      2018-07-26
      4
      回复
    • Dylan-s
      Dylan-s
      2018-08-22

      我们也出现了这样的问题,就是rawData中的nickName有问题 导致签名不过。我在论坛搜索过了,也有不少用户反馈,但是都没有给出解决方案。求官方给出解决方案

      2018-08-22
      回复
    • 罗思阳
      罗思阳
      2018-08-28

      同样出现这个问题了

      2018-08-28
      回复
    • 王志强
      王志强
      2018-08-31

      我也出现这问题

      2018-08-31
      回复
    • Kay
      Kay
      2018-10-24

      我同一个用户不时出现这个问题,啥情况

      2018-10-24
      1
      回复
  • 失忆的鱼🐠
    失忆的鱼🐠
    2018-07-28

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

    2018-07-28
    赞同 1
    回复 2
    • 新😹 😂 👿 👾 (๑'ᴗ'๑)
      新😹 😂 👿 👾 (๑'ᴗ'๑)
      2018-07-28

      rawData有数据么,rawData其实可以直接用,只是不是很安全,最好校验啦,当然校验目前存在的问题官方人员也不清楚,只能说呵呵了

      2018-07-28
      回复
    • 失忆的鱼🐠
      失忆的鱼🐠
      2018-07-30

      rawData是有数据的,只是有些用户的头像,名称,在后台显示不出。

      2018-07-30
      回复
  • 侧耳倾听
    侧耳倾听
    2019-12-14

    确实不一致。真心不知道问题出在哪,字符串前前后后排查了很多次,传给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"


    2019-12-14
    赞同
    回复 1
    • 侧耳倾听
      侧耳倾听
      2019-12-14
      前台传给我的数据,和signature 和我用rawData + session_key sha1加密后的数据就是不一致
      2019-12-14
      回复
  • Million
    Million
    2018-09-07

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

    2018-09-07
    赞同
    回复
  • 罗思阳
    罗思阳
    2018-08-28

    @Can🌴 

    同样出现这样的问题了

    2018-08-28
    赞同
    回复
  • 明明德
    明明德
    2018-07-27

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

    2018-07-27
    赞同
    回复 3
    • 新😹 😂 👿 👾 (๑'ᴗ'๑)
      新😹 😂 👿 👾 (๑'ᴗ'๑)
      2018-07-27

      mysql才会区分utf8与utf8mb4,java后台不会的,所以应该不是后台的问题,安卓机昨天试过,具有相同的emoji符号在后台加密没问题,目前不知道用户的机型是不是ios,反正安卓机传回来的rawData,我在日志那里复制过来后再手动自己在网上进行sha1加密,两个参数是一样的,而对不上的用户手动加密校验就是不相同

      2018-07-27
      回复
    • 明明德
      明明德
      2018-07-28回复新😹 😂 👿 👾 (๑'ᴗ'๑)

      也许是同样的表情在安卓手机和苹果手机返回的rawData根本就不一样

      2018-07-28
      回复
    • 新😹 😂 👿 👾 (๑'ᴗ'๑)
      新😹 😂 👿 👾 (๑'ᴗ'๑)
      2018-07-28回复明明德

      最怕的是还要分ios的版本,都不知道怎么测试,人穷买不起iphone,以前自费买了部itouth6测试微信网页版的,自从要弄小程序后就废了,小程序不兼容ipad和itouch

      2018-07-28
      回复
  • 一箩筐
    一箩筐
    2018-07-27

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


    2018-07-27
    赞同
    回复 1
  • 新😹 😂 👿 👾 (๑'ᴗ'๑)
    新😹 😂 👿 👾 (๑'ᴗ'๑)
    2018-07-26

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

    2018-07-26
    赞同
    回复 8
    • Can🌴
      Can🌴
      2018-07-26

      感谢回复,麻烦给下输入输出等信息或者log,这样我们才能查问题。

      2018-07-26
      回复
    • 新😹 😂 👿 👾 (๑'ᴗ'๑)
      新😹 😂 👿 👾 (๑'ᴗ'๑)
      2018-07-26回复Can🌴


      由于涉及用户隐私,所以遮住昵称和头像链接

      其中wxappSignature为前端接口返回的signature,signature2为系统在后端通过sha1加密得到的signature,昵称那里显示是问号,但是这些emoji直接返回到手机是可以识别的,我可以理解为java后端能识别emoji,就是加密后校验的时候两个signature不一致

      2018-07-26
      回复
    • Can🌴
      Can🌴
      2018-07-26回复新😹 😂 👿 👾 (๑'ᴗ'๑)

      平心而论,我给你反馈问题,用贴图的,你怎么查。

      2018-07-26
      回复
    • 新😹 😂 👿 👾 (๑'ᴗ'๑)
      新😹 😂 👿 👾 (๑'ᴗ'๑)
      2018-07-26回复Can🌴

      平心而论,难道你们这边就不能自己测试一下,这些都是用户数据,我能够随便公开给么,现在这个问题讨论已经是公开的了,如果是正式的情况下应该是以私信的方式而不是这样公开讨论的,然而这个社区并没有私信方式

      2018-07-26
      3
      回复
    • f番茄花园
      f番茄花园
      2018-07-30回复新😹 😂 👿 👾 (๑'ᴗ'๑)

      兄弟 全都是base64编码 你给个截图是准备让微信开发人员一个字母一个字母敲吗 何况微信开发人员也不一定有这么高的权限可以直接去查数据库

      2018-07-30
      回复
    查看更多(3)
登录 后发表内容