身份认证(旧版) | 腾讯云开发 CloudBase - AI 原生后端一体化平台
跳到主要内容

身份认证(旧版)

提示

当前 @cloudbase/js-sdk 最新版本为 v3。若需使用 v3 版本,请参考v3 文档;若需使用 v1 版本,请参考v1 文档

App.auth()

接口描述

返回 Auth 对象,身份认证相关的属性和方法都在 Auth 对象中

接口声明:auth(): Auth

信息

@cloudbase/js-sdk@2.x 版本将只支持 local 方式(Web 端在显式退出登录之前 30 天保留身份验证状态)存储身份状态。(原 1.x 版本的 sessionnone 模式不再支持)

示例代码

import cloudbase from "@cloudbase/js-sdk";

const app = cloudbase.init({
env: "xxxx-yyy",
clientId: "xxxx",
region: "ap-shanghai", // 不传默认为上海地域
});

const auth = app.auth();

注册/登录/登出相关

提示

手机号验证码注册 仅支持 上海 地域

Auth.signUp()

接口描述

接口功能:注册用户,目前支持手机号验证码注册,邮箱验证码注册。更多详细流程可参考用户注册

接口声明:signUp(params: SignUpRequest): Promise<LoginState>

接口入参: SignUpRequest

字段类型必填说明
phone_numberstring注册所用手机号,phone_number 与 email 必须任选其一使用
emailstring注册所用邮箱 ,phone_number 与 email 必须任选其一使用
verification_codestring验证码,可通过Auth.getVerification获取
verification_tokenstring验证码 token,可通过Auth.verify获取
provider_tokenstring第三方 provider token,用于绑定第三方用户信息,可通过Auth.grantProviderToken获取
passwordstring密码
namestring用户名
genderstring性别
picturestring头像
localestring地址
usernamestring用户名称,长度 5-24 位,支持字符中英文、数字、特殊字符(仅支持_-),不支持中文

接口出参: LoginState

详见 LoginState

示例代码

// 初始化SDK
const app = cloudbase.init({
env: "xxxx-yyy",
clientId: "xxxxx",
region: "ap-shanghai", // 不传默认为上海地域
});

const auth = app.auth();

// 例:手机号验证码注册

// 第一步:用户点击获取验证码,调用如下方法发送短信验证码,将 verificationInfo 存储到全局,方便第三步作为参数输入
const phoneNumber = "+86 13800000000";
const verification = await auth.getVerification({
phone_number: phoneNumber,
});

// 若使用邮箱验证,第一步代码改为
{
const email = "test@example.com";
const verification = await auth.getVerification({
email: email,
});
}

// 验证码验证
// 调用发送短信接口后,手机将会收到云开发的短信验证码。
// 用户填入短信验证码,可以调用下面的接口进行验证。

// 第二步:等待用户在页面中输入短信验证码
const verificationCode = userInputCode; // 6位验证码

// 第三步:待用户输入完验证码之后,验证短信验证码
const verificationTokenRes = await auth.verify({
verification_id: verification.verification_id,
verification_code: verificationCode,
});

// 第四步:注册
// 如果该用户已经存,则登录
if (verification.is_user) {
await auth.signIn({
username: phoneNumber,
verification_token: verificationTokenRes.verification_token,
});
} else {
// 否则,则注册新用户,注册新用户时,可以设置密码,用户名
// 备注:signUp 成功后,会自动登录
await auth.signUp({
phone_number: phoneNumber,
verification_code: verificationCode,
verification_token: verificationTokenRes.verification_token,
// 可选,设置昵称
name: "手机用户",
// 可选,设置密码
password: "password",
// 可选,设置登录用户名
username: "username",
});
}

Auth.signIn()

提示

手机号登录 仅支持 上海 地域

接口描述

接口功能:在已完成注册后,可通过该方法进行用户登录,目前支持手机号,邮箱,用户名密码登录。用户名密码登录的详细流程可参考账号密码登录

接口声明:signIn(params: SignInRequest): Promise<LoginState>

接口入参: SignInRequest

字段类型必填说明
usernamestring用户手机号,邮箱或自定义用户名,如果是中国手机号要带上“+86 ”国家码,例如“+86 138xxxxxxxxx”
passwordstring用户密码 ,password 与 verification_token 必须任选其一
verification_tokenstring验证码 token ,password 与 verification_token 必须任选其一,可通过Auth.verify获取

接口出参: LoginState

详见 LoginState

示例代码

const app = cloudbase.init({
env: "xxxx-yyy",
clientId: "xxxxx",
region: "ap-shanghai", // 不传默认为上海地域
});

const auth = app.auth();

// 已完成注册
// 例:手机号登录
const phoneNumber = "+86 13800000000";

await auth.signIn({
username: phoneNumber,
password: "your password",
});

// 例:邮箱登录
const email = "test@example.com";

await auth.signIn({
username: email,
password: "your password",
});

// 例:用户名登录
const username = "myname";
await auth.signIn({
username,
password: "your password",
});

Auth.signOut()

接口描述

接口功能:退出登录

接口声明:signOut(params?: SignoutRequest): Promise<SignoutReponse>

接口入参: SignoutRequest

字段类型必填说明
redirect_uristring退出后的重定向页面地址
statestring在有 redirect_uri 时,会将该参数放在 redirect_uri 的链接参数 state 中,用于区分某个身份源

接口出参: SignoutReponse

字段类型说明
redirect_uristring重定向页面地址,如果入参传了 redirect_uri 或第三方认证源配置了 redirect_uri,则会有返回

示例代码

const app = cloudbase.init({
env: "xxxx-yyy",
region: "ap-shanghai", // 不传默认为上海地域
});

const auth = app.auth();

// 监听登录态变化
auth.onLoginStateChanged((params) => {
console.log(params);
const { eventType } = params?.data || {};
switch (eventType) {
case "sign_in":
// 登录成功
break;
case "sign_out":
// 退出登录成功
break;
case "credentials_error":
// 权限失效
break;
default:
return;
}
});

await auth.signOut();

Auth.signInAnonymously()

接口描述

接口功能:匿名登录,详细流程可参考匿名登录

接口声明 signInAnonymously(): Promise<LoginState>

接口入参: 无

接口出参: LoginState

详见 LoginState

示例代码

const app = cloudbase.init({
env: "xxxx-yyy",
region: "ap-shanghai", // 不传默认为上海地域
});

const auth = app.auth();
await auth.signInAnonymously();

Auth.setCustomSignFunc()

接口描述

接口功能:设置获取自定义登录 ticket 函数

接口声明:setCustomSignFunc(getTickFn: GetCustomSignTicketFn): void

接口入参: GetCustomSignTicketFn

字段类型说明
getTickFn() => Promise<string>获取自定义登录 ticket 的函数

接口出参: 无

示例代码

const app = cloudbase.init({
env: "xxxx-yyy",
region: "ap-shanghai", // 不传默认为上海地域
});
const auth = app.auth();
const getTickFn = new Promise((resolve, reject));
await auth.setCustomSignFunc(getTickFn);

Auth.signInWithCustomTicket()

接口描述

接口功能:自定义登录,配合Auth.setCustomSignFunc使用。详细流程可参考自定义登录

接口声明:signInWithCustomTicket(): Promise<LoginState>

接口入参: 无

接口出参: LoginState

详见 LoginState

示例代码