1

这两天在开发微信小程序登录以及加解密的时候,因为数据大小写的问题被坑了一把。

场景

  1. 小程序调用wx.login时会获得code,传输给服务端可以得到openid,unionid(绑定了开放平台),session_key
  2. 小程序调用getUserInfo会获得encrypted_data,iv,解密后得到unionId,openId
  3. unionidopenid这两个场景键名大小写是不同的

例子

  1. 服务端根据code获取session_key返回结果如下:

    {
        "session_key": "我是session_key",
        "openid": "我是openid",
        "unionid": "我是unionid"
    }
  2. 服务端根据session_key解密encrypted_data和iv返回结果如下:

    {
        "openId": "OPENID",
        "nickName": "NICKNAME",
        "gender": GENDER,
        "city": "CITY",
        "province": "PROVINCE",
        "country": "COUNTRY",
        "avatarUrl": "AVATARURL",
        "unionId": "UNIONID",
        "watermark":
        {
            "appid":"APPID",
            "timestamp":TIMESTAMP
        }
    }

可以看到两次同样的字段openidunionid大小写是不同的,此处容易踩坑。

结论

  1. 服务端根据code换session_key/openid/unionid小写
  2. 服务端根据encrypted_data和iv解密得到的openId/unionId大写

最后,祝大家在开发过程中少踩坑。

更多精彩尽在我的博客一键直达


xialeistudio
21.5k 声望5k 粉丝