微信小程序获取 openid 和 session_key 等信息
最近在写小程序的时候遇到要向后台提交一个唯一的标识,于是便找到了微信自带的openid,openid是微信用户在小程序的唯一标识。但是获取过程并不是那么简单,于是在此记录。
以下是小程序的登录流程。通过它的登录流程,我们可以得出请求步骤。
1、调用接口获取登录凭证(code)。
需要通过凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)等。
wx.login({
success (res) {
if (res.code) {
//成功就打印code
console.log(res.code)
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
2、登录凭证校验。
通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。
请求地址:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
请求参数:
属性 | 类型 | 说明 |
---|---|---|
appid | string | 小程序 appId |
secret | string | 小程序 appSecret |
js_code | string | 登录时获取的 code |
grant_type | string | 授权类型,此处只需填写 authorization_code |
返回值 |
返回值:
属性 | 类型 | 说明 |
---|---|---|
openid | string | 用户唯一标识 |
session_key | string | 会话密钥 |
··· | ··· | ··· |
3、各参数获取方式
- js_code: 第一步就是获取这个
- grant_type:只需填写 authorization_code
- appid,secret 这两个需要自己在开发的通过邮箱申请,查看方式如下:
输入网址:https://mp.weixin.qq.com/
,扫码进入自己的小程序,找到开发 >> 开发设置,根据提示即可获取。
4、完整的获取 openid 的代码示例。
如下图的 getId 方法即为完整获取 openid 的方法。
//获取用户唯一标识openid
getId: function () {
var that = this
wx.login({
success(res) {
if (res.code) {
var _that = that
//发起网络请求
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
js_code: res.code,
appid: 'xxxxxxxxxxxxxxx',
grant_type: 'authorization_code',
secret: 'xxxxxxxxxxxxxxxx'
},
success(res) {
console.log(res.data.openid)
//将唯一标识保存在本地
_that.data.userid = res.data.openid
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
},