收藏
回答

微信昵称有一面小红旗,导致获取微信信息时乱码,无法通过验证。

问题模块 框架类型 问题类型 操作系统 工具版本
开发者工具 小游戏 Bug Windows wx.getUserInfo()接口

在调用微信wx.getUserInfo()接口时,微信返回的信息有乱码。

乱码如下。造成乱码的原因是用户的微信昵称有一面小红旗。(应该叫emoji表情?)

rawData:{\\nickName\\:\\明������������\\,\\gender\\:1,\\language\\:\\zh_CN\\,\\city\\:\\Guilin\\,\\province\\:\\Guangxi\\,\\country\\:\\China\\,\\avatarUrl\\:\\https://wx.qlogo.cn/mmopen/vi_32/xxvmGLk4H8eZ68RZv0Cb2qvjTGria5rnxswJsmcC8kT6Y57M9haLfaRwBJ3JbAsLRm5MUYnXGWJZtH614IOxwNQ/132\\},userInfo:{nickName:明������������,gender:1,language:zh_CN,city:Guilin,province:Guangxi,country:China,avatarUrl:https://wx.qlogo.cn/mmopen/vi_32/xxvmGLk4H8eZ68RZv0Cb2qvjTGria5rnxswJsmcC8kT6Y57M9haLfaRwBJ3JbAsLRm5MUYnXGWJZtH614IOxwNQ/132},

客户端获取微信信息的重要代码片段。

wx.getUserInfo({
success(res) {
resolve(res)
},
   fail(res) {
resolve()
}
})


url: `${app.networkController.getGateHost()}/gate/auth`,
message: {
...userInfo,
   code,
   protocol: authProtocol,
   token: 'MISS ME?'
},


直接从接口获取后传递给服务器。


if (this.client.rawData && this.client.signature) {
if (!this.checkSign(this.client.rawData, this.client.signature, accessInfo.session_key)) {
console.log('zpmp:签名校验不通过!');
       return;
   }

服务器接收到的rawData即上述乱码情况。

造成结果:小游戏签名验证不通过。

请问怎么解决?

最后一次编辑于  11-06
回答关注问题邀请回答
收藏

3 个回答

  • 小程序/小游戏开发-Link
    小程序/小游戏开发-Link
    11-06

    显示乱码可能只是终端不支持,计算签名的时候是不需要把内容显示出来的。

    11-06
    赞同
    回复 2
    • 普通话不普通-虞
      普通话不普通-虞
      11-06
      你好,谢谢回复。你说的这个可能我刚刚也想过,但是测试了一下,微信名没有那面小红旗的,签名是可以验证通过的。有那面小红旗的无法验证通过。能看到的区别就只是多了一串乱码。
      11-06
      回复
    • 小程序/小游戏开发-Link
      小程序/小游戏开发-Link
      11-06回复普通话不普通-虞
      你检查下是否参数传递到后台的过程中有什么步骤修改了昵称内容呢?
      11-06
      回复
  • 小游戏运营专员-宏
    小游戏运营专员-宏
    11-06

    你好,能否创建一个简单代码片段,这边复现看看(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    11-06
    赞同
    回复 2
    • 普通话不普通-虞
      普通话不普通-虞
      11-06
      这部分代码很简单的,只是从微信的接口取微信信息下来,然后按照接口说明的加密方式去对比验证,中间没有添加任何转码之类的逻辑。片段就是上面贴出来的部分。
      11-06
      回复
    • 普通话不普通-虞
      普通话不普通-虞
      11-06
      谢谢回复
      11-06
      回复
  • 普通话不普通-虞
    普通话不普通-虞
    11-06

    特别提示:我【不需要】encode后存入数据库这样的操作,【我只是要验证签名登陆。】

    11-06
    赞同
    回复