获取用户端的唯一标识
程序员文章站
2022-05-28 14:33:58
...
微信登录:获取微信用户的唯一标识id。
基本流程如下:
- (1)通过wx.login( ) 获取用户的code值
- (2)拿到用户的code值,通过wx.request( ) 请求微信接口(https://api.weixin.qq.com/sns/jscode2session)服务,请求传参(code、appid、appsecret、grant_type)
- (3)请求接口后,就可以得到 openid 和 session_key的值
请求地址:https://api.weixin.qq.com/sns/jscode2session(微信提供的)
请求参数:
属性 | 类型 | 默认值 | 必填 | 说明 |
appid | string | 是 |
小程序appId |
|
secret | string | 是 | 小程序appSecret | |
js_code | string | 是 | 登录时获取的code | |
grant_type | string | 是 | 授权类型,此处只需填写
authorization_code |
返回的值:
属性 | 类型 | 说明 |
openid | string | 用户唯一标识 |
session_key | string | 会话** |
unionid | string | 用户在开放平台的唯一标识符,在满足UnionID下发条件的情况会返回,详见UnionID机制说明 |
errcode | number | 错误码 |
errmsg | string | 错误信息 |
errorcode的合法值:
值 | 说明 |
-1 | 系统繁忙,此时请开发者稍后再试 |
0 | 请求成功 |
其中appId和appSecret来自如下:
栗子:
<button bindtap='getOpenId'>获取用户的唯一openid</button>
var var appId = '自己从上图拿取',
appSecret = '自己从上图拿取';
getOpenId: function() { // 获取用户的唯一标识
wx.login({
success(res){
console.log('code====',res.code);
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data:{
appid: appId,
secret: appSecret,
js_code: res.code,
grant_type:'authorization_code'
},
method:"GET",
success(res){
console.log('openid=====',res.data.openid); // 得到openid
console.log('session_key====', res.data.session_key); // 得到 session_key
}
})
}
})
}
页面截图:
点击按钮拿到的值如下:
这样就可以得到用户的唯一标识openId,也可以拿到session_key。
说明:
- 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
- 调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 和 会话** session_key。
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
注意:
- 会话**
session_key
是对用户数据进行 加密签名 的**。为了应用自身的数据安全,开发者服务器不应该把会话**下发到小程序,也不应该对外提供这个**。 - 临时登录凭证 code 只能使用一次