跳到主要内容

短信验证码登录

使用短信验证码登录,您可以让用户使用自己的手机号,结合短信验证码或密码注册、登录 CloudBase

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

本文将以 V2 版本进行介绍

使用限制及费用

  • 新开通的按量计费环境,或者 2021 年 4 月 9 日前开通的按量计费环境,享有首月 100 条的免费额度;
  • 超出免费额度的需求,开发者可以前往云开发控制台 购买资源包
  • 短信下发存在频率限制:
    • 同一号码 30 秒内最多发送 1 条;
    • 同一手机号一个自然日最多发送 10 条;

前置动作

开启短信验证码登录

  1. 前往 云开发/身份认证
  2. 在登录方式列表中,选择 短信验证码登录 方式,点击开启

注册流程

使用手机号进行注册时,您需要先发送短信验证码,然后通过验证码完成注册。

auth 实例请参考 SDK 初始化

// 1. 发送手机号验证码
// 需要加区号
const phoneNumber = "+86 13800000000";
const verification = await auth.getVerification({
phone_number: phoneNumber
});

// 2. 验证码验证
// 假设这里收到用户填写的验证码"000000"
const verificationCode = "000000";
// 验证验证码的正确性
const verificationTokenRes = await auth.verify({
verification_id: verification.verification_id,
verification_code: verificationCode
});

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

密码长度不小于 8 位,不大于 32 位,需要包含字母和数字。

登录流程

手机号密码登录

Auth.signIn 方法可用于 手机号,邮箱,用户名 登录

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

验证码登录

Auth.signInWithSms 方法可用于 手机号验证码 登录

const phoneNum = 'xxx'

// 发送验证码
const verificationInfo = await auth.getVerification({
phone_number: phoneNum,
});

// 假设这里收到用户填写的验证码"000000"
const verificationCode = "000000";

// 验证码登录
await auth.signInWithSms({
verificationInfo,
verificationCode: verificationCode,
phoneNum: phoneNum,
});