这两天在开发微信小程序登录以及加解密的时候,因为数据大小写的问题被坑了一把。
场景
- 小程序调用
wx.login
时会获得code
,传输给服务端可以得到openid
,unionid(绑定了开放平台)
,session_key
- 小程序调用
getUserInfo
会获得encrypted_data
,iv
,解密后得到unionId
,openId
-
unionid
和openid
这两个场景键名大小写是不同的
例子
-
服务端根据
code获取session_key
返回结果如下:{ "session_key": "我是session_key", "openid": "我是openid", "unionid": "我是unionid" }
-
服务端根据
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 } }
可以看到两次同样的字段openid
和unionid
大小写是不同的,此处容易踩坑。
结论
- 服务端根据
code换session_key/openid/unionid
是小写
- 服务端根据
encrypted_data和iv
解密得到的openId/unionId
是大写
最后,祝大家在开发过程中少踩坑。
更多精彩尽在我的博客一键直达
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。