跳到主要内容

微信授权登录

经微信开放平台(普通网站应用及移动应用等)授权的应用可以直接使用微信登录 CloudBase。

版本说明
  • 登录鉴权(v2) 适用于 @cloudbase/js-sdk@2.x 版本
  • 如您使用的 SDK 版本为 1.x,请参考 登录鉴权(v1)
  • v2 版本暂不支持公众号登录方式,如需使用该方式,请用 v1 版本

本文将以 V2 版本进行介绍

前置动作

开启微信登录

  1. 首先需要一个开放平台的注册账号,如果没有,请前往 微信开放平台 申请
  2. 前往 云开发/身份认证
  3. 在登录方式列表中,选择 微信开放平台登录 方式,点击「去设置」填入 AppIdAppSecret

注册流程

使用微信授权登录时,用户在第一次使用微信登录时会自动创建对应的 CloudBase 用户账号,无需单独的注册流程。

具体流程如下:

  1. 用户第一次使用微信登录时,系统会自动创建 CloudBase 用户
  2. 用户的微信信息(如昵称、头像等)会自动同步到 CloudBase 用户资料中
  3. 后续使用相同微信账号登录时,会直接登录到对应的 CloudBase 用户

登录流程

获取第三方平台授权页地址

填入微信平台 ID、重定向 URI 和自定义状态标识字段用于识别平台回调来源。系统内置有微信开放平台平台 ID

auth 实例请参考 SDK 初始化

Auth.genProviderRedirectUri 用于生成第三方平台授权页URL

const {
uri
} = await auth.genProviderRedirectUri({
provider_id: "wx_open", // 微信开放平台
provider_redirect_uri: providerUri, // 重定向 URI
state: state, // 自定义状态标识
other_params: otherParams // 其他参数
});

访问 URI 并进行授权后,回调至指定地址,获取第三方平台 token

将用户重定向至 URI,例如 location.href = uri ;待用户授权完毕后,回调至指定的 provider_redirect_uri 地址。

// 此时 url query 中携带授权 code,state 等参数
// 1. 检查 state 是否符合预期(如设置的 wx_open)

// 2. 获取第三方平台跳转回页面时,url param 中携带的 code 参数
const provider_code = "your_provider_code";

// 3. 如符合预期,获取第三方平台 token
const {
provider_token
} = await auth.grantProviderToken({
provider_id: "wx_open",
provider_redirect_uri: "curpage", // 指定三方平台跳回的 url 地址
provider_code: provider_code // 第三方平台跳转回页面时,url param 中携带的 code 参数
});

通过第三方平台 token 登录

await auth.signInWithProvider({
provider_token: provider_token
});