【微信小程序自学之路】session、openid、unionid加密解密

微信小程序 sessionKey openid unionid

在开发小程序的时候,经常我们想得到唯一的用户id

但是微信的接口

1
wx.getUserInfo()

已经屏蔽了这些敏感信息,只留下了这些用户信息

1
2
3
4
5
6
7
8
9
{
"nickName": "Band",
"gender": 1,
"language": "zh_CN",
"city": "Guangzhou",
"province": "Guangdong",
"country": "CN",
"avatarUrl": "http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"
}

这往往不符合我们的期望,因为有时候我们需要得到唯一标识一个用户

这个能唯一标识用户的数据有 openid 和 unionid

openid是某个微信平台下某个应用内唯一标识用户的id
unionid 是微信平台某个开发者所有应用内唯一标识用户的id

因此如何获取这个 openid 和 uniondid 呢?

腾讯官方网站提供了几个方式

第一步 获取临时凭证code

1
2
3
4
5
wx.login({
success(res) {
console.log(res);
}
})
1
2
3
4
{
code: "xxxxxxxxxxxxxxxxxxxxxxxxx",
errMsg: "login:ok"
}

先获取到了 code

第二步 拿code 去微信申请 openid 和 session_id

通过http接口:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

appid 小程序 appId
secret 小程序 appSecret
js_code 登录时获取的临时凭证 code
grant_type 授权类型,此处只需填写 authorization_cod

接口返回的数据格式:

1
2
3
4
5
{
'session_key': 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyy',
'expires_in': 7200,
'openid': 'zzzzzzzzzzzzzzzzzzzzzzzzzzz'}
}

到这一步,openid 已经获取

第三步 解密获取 unionid

上一步获取的 session_key 拿去解密wx.getUserInfo获取的加密数据,即可得到 uninoid

坚持原创技术分享,您的支持将鼓励我继续创作!