跳到主要内容

auth.wx.access-token

使用code换取微信access-token

  • 请求路由: auth.wx.access-token
  • 交互模型: Request Response
  • 访问限制: 无

使用这个接口返回的数据,调用 auth.wx 接口进行平台微信登录认证

微信认证流程​

  1. 在需要认证的环节,通过请求微信认证链接获取授权码,各种获取方式参考:

  2. 使用获取到的授权码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时,用户已关注公众号
  3. 微信用户认证

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"
}
});
  1. 使用认证结果中的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;
  1. 使用认证token进行API请求

发送其他API请求,这些请求会在已认证的上下文中被执行:

RSocket.rr({
"route" : "users.me"
});
  1. 注销

注销时,清除全局令牌:

globalThis.TOKEN = '';

请求​

RSocket.rr({
"route" : "auth.wx.access-token",
"data" : {
"appId" : "wxd0be3263c2bdd6bf",
"code" : "033uwt0w3qH43X2Vd51w3EkzqY3uwt0S",
"tenantId" : "aspiretop"
}
});

请求参数​

名称类型必须说明
appIdString是应用appId
codeString是客户端返回的授权码code
tenantIdString是租户标识

返回​

微信oAuth认证结果,以及平台返回的用户信息

{
"session_key" : "9krZSSJzQPGD9C6CbyKFCA==",
"openid" : "oKQgr46obJ_hpT867BJxzqNjt2MA",
"unionid" : "o6ZuW6Pmx0G3mdPzGHONzqUhKuCo",
"appId" : "wxd0be3263c2bdd6bf",
"exists" : false,
"hasMobile" : false,
"followed" : false,
"tenantId" : "aspiretop"
}

返回属性​

名称类型说明
appIdString应用appId
openidString用户openId
unionidString用户unionId
existsBoolean用户是否已经存在
hasMobileBoolean已存在的用户是否已经绑定手机
followedBoolean用户是否已经关注公众号(仅微信用户)
tenantIdString当前认证的租户标识

下载结果模型定义