auth.wx.access-token
使用code换取微信access-token
- 请求路由:
auth.wx.access-token- 交互模型:
Request Response- 访问限制: 无
使用这个接口返回的数据,调用 auth.wx 接口进行平台微信登录认证
微信认证流程
在需要认证的环节,通过请求微信认证链接获取授权码,各种获取方式参考:
使用获取到的授权码code请求微信access_token
请求RSocket.rr({
route: 'auth.wx.access-token',
data: {
appId: 'wxd0be3263c2bdd6bf',
code: '033uwt0w3qH43X2Vd51w3EkzqY3uwt0S',
tenantId: 'aspiretop'
}
})小程序响应{
"session_key": "GYF5Q7rxIF8J5m71hDWYNA==",
"openid": "oIGJz5JdkSS-K6xBLw-eJFqDmcGI",
"unionid": "o3F8DsxiJWbMHE9-Bie0l2EPLTr8",
"appId": "wxc0b9a23c06b0f485",
"exists": false,
"hasMobile": false
}公众号响应{
"access_token": "27_2taTM5l3n......ME6EA",
"expires_in": 7200,
"refresh_token": "27_lBjI7rXMaw......Ep2A",
"openid": "oUdKws4OtMZ5-6Y91v3ZWGm4Rzhs",
"scope": "snsapi_userinfo",
"unionid": "o3F8DsxiJWbMHE9-Bie0l2EPLTr8",
"exists": false,
"hasMobile": false,
"followed": true
}其中:
- exists为true时,微信用户对应的账号已存在,否则为新用户
- hasMobile为true时,用户已经绑定手机号
- followed为true时,用户已关注公众号
微信用户认证
a). 新用户注册要求绑定手机号时,根据前面步骤返回的exists以及hasMobile来确定是否需要用户进行短信验证码进行收集绑定:
发送账户绑定短信验证码RSocket.rr({
route: 'auth.sms.sendcode',
data: {
"mobile": "13900010001",
"type": 3,
"tenantId": "aspiretop"
}
});使用手机号和收到的验证码,连同步骤1.中返回的数据包一起提交进行认证及注册绑定:
新用户认证以及绑定手机RSocket.rr({
route: 'auth.wx',
data: {
openid: "oKQgr46obJ_hpT867BJxzqNjt2MA",
unionid: "o6ZuW6Pmx0G3mdPzGHONzqUhKuCo",
appId: "wxd0be3263c2bdd6bf",
mobile: "13930380922",
vcode: "123923",
scope: "shop"
}
});b). 已存在用户认证,以及不需要绑定手机的场景,直接进行微信用户认证
新用户认证以及绑定手机RSocket.rr({
route: 'auth.wx',
data: {
openid: "oKQgr46obJ_hpT867BJxzqNjt2MA",
unionid: "o6ZuW6Pmx0G3mdPzGHONzqUhKuCo",
appId: "wxd0be3263c2bdd6bf"
}
});
- 使用认证结果中的token设置全局令牌
认证成功后,返回下面信息:
{
"token": "eyJhbGciO......5w",
"expires": 7200,
}将返回的token设置为全局认证令牌:
const tokenModel = RSocket.rr({
route: 'auth.wx',
data: {
openid: "oKQgr46obJ_hpT867BJxzqNjt2MA",
unionid: "o6ZuW6Pmx0G3mdPzGHONzqUhKuCo",
appId: "wxd0be3263c2bdd6bf"
}
});
globalThis.TOKEN = tokenModel.token;
- 使用认证token进行API请求
发送其他API请求,这些请求会在已认证的上下文中被执行:
RSocket.rr({
"route" : "users.me"
});
- 注销
注销时,清除全局令牌:
globalThis.TOKEN = '';
请求
RSocket.rr({
"route" : "auth.wx.access-token",
"data" : {
"appId" : "wxd0be3263c2bdd6bf",
"code" : "033uwt0w3qH43X2Vd51w3EkzqY3uwt0S",
"tenantId" : "aspiretop"
}
});
请求参数
| 名称 | 类型 | 必须 | 说明 |
|---|---|---|---|
appId | String | 是 | 应用appId |
code | String | 是 | 客户端返回的授权码code |
tenantId | String | 是 | 租户标识 |
返回
微信oAuth认证结果,以及平台返回的用户信息
{
"session_key" : "9krZSSJzQPGD9C6CbyKFCA==",
"openid" : "oKQgr46obJ_hpT867BJxzqNjt2MA",
"unionid" : "o6ZuW6Pmx0G3mdPzGHONzqUhKuCo",
"appId" : "wxd0be3263c2bdd6bf",
"exists" : false,
"hasMobile" : false,
"followed" : false,
"tenantId" : "aspiretop"
}
返回属性
| 名称 | 类型 | 说明 |
|---|---|---|
appId | String | 应用appId |
openid | String | 用户openId |
unionid | String | 用户unionId |
exists | Boolean | 用户是否已经存在 |
hasMobile | Boolean | 已存在的用户是否已经绑定手机 |
followed | Boolean | 用户是否已经关注公众号(仅微信用户) |
tenantId | String | 当前认证的租户标识 |