PhoneAuthProvider class

用于生成 PhoneAuthCredential 的提供程序。

PhoneAuthProvider 不适用于 Node.js 环境。

签名

export declare class PhoneAuthProvider 

构造函数

构造函数 修饰符 说明
(构造函数)(auth) 构造 PhoneAuthProvider 类的新实例

属性

属性 修饰符 类型 说明
PHONE_SIGN_IN_METHOD static “电话” 始终设置为 SignInMethod.PHONE。
PROVIDER_ID static “电话” 始终设置为 ProviderId.PHONE。
providerId “电话” 始终设置为 ProviderId.PHONE。

方法

方法 修饰符 说明
credential(verificationId, verificationCode) static 根据来自 PhoneAuthProvider.verifyPhoneNumber() 的验证 ID 以及发送到用户移动设备的代码,创建电话身份验证凭据。
credentialFromError(error) static 传递错误时返回 AuthCredential
credentialFromResult(userCredential) static UserCredential 生成 AuthCredential
verifyPhoneNumber(phoneOptions, applicationVerifier) 向指定的电话号码发送验证码,启动电话号码身份验证流程。

PhoneAuthProvider.(构造函数)

构造 PhoneAuthProvider 类的新实例

签名

constructor(auth: Auth);

参数

参数 类型 说明
auth 身份验证 应在其中登录的 Firebase Auth 实例。

PhoneAuthProvider.PHONE_SIGN_IN_METHOD

始终设置为 SignInMethod.PHONE。

签名

static readonly PHONE_SIGN_IN_METHOD: 'phone';

PhoneAuthProvider.PROVIDER_ID

始终设置为 ProviderId.PHONE。

签名

static readonly PROVIDER_ID: 'phone';

PhoneAuthProvider.providerId

始终设置为 ProviderId.PHONE。

签名

readonly providerId: "phone";

PhoneAuthProvider.credential()

根据来自 PhoneAuthProvider.verifyPhoneNumber() 的验证 ID 以及发送到用户移动设备的代码,创建电话身份验证凭据。

签名

static credential(verificationId: string, verificationCode: string): PhoneAuthCredential;

参数

参数 类型 说明
验证 ID 字符串 PhoneAuthProvider.verifyPhoneNumber() 返回的验证 ID。
验证码 字符串 系统向用户的移动设备发送的验证码。

返回

PhoneAuthCredential

身份验证提供方凭据。

示例 1

const provider = new PhoneAuthProvider(auth);
const verificationId = provider.verifyPhoneNumber(phoneNumber, applicationVerifier);
// Obtain verificationCode from the user.
const authCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
const userCredential = signInWithCredential(auth, authCredential);

示例 2

使用 signInWithPhoneNumber 方法提供备用流程。

const confirmationResult = await signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);
// Obtain verificationCode from the user.
const userCredential = await confirmationResult.confirm(verificationCode);

PhoneAuthProvider.credentialFromError()

传递错误时返回 AuthCredential

此方法适用于 auth/account-exists-with-different-credentials 等错误。如果尝试设置用户的电话号码,但该号码已经绑定了其他账号,那么该方法将十分有用。例如,以下代码会尝试更新当前用户的电话号码,如果更新失败,请将用户与该号码关联的账号相关联:

const provider = new PhoneAuthProvider(auth);
const verificationId = await provider.verifyPhoneNumber(number, verifier);
try {
  const code = ''; // Prompt the user for the verification code
  await updatePhoneNumber(
      auth.currentUser,
      PhoneAuthProvider.credential(verificationId, code));
} catch (e) {
  if ((e as FirebaseError)?.code === 'auth/account-exists-with-different-credential') {
    const cred = PhoneAuthProvider.credentialFromError(e);
    await linkWithCredential(auth.currentUser, cred);
  }
}

// At this point, auth.currentUser.phoneNumber === number.

签名

static credentialFromError(error: FirebaseError): AuthCredential | null;

参数

参数 类型 说明
error FirebaseError 从中生成凭据的错误。

返回

AuthCredential |null

PhoneAuthProvider.credentialFromResult()

UserCredential 生成 AuthCredential

签名

static credentialFromResult(userCredential: UserCredential): AuthCredential | null;

参数

参数 类型 说明
userCredential UserCredential 用户凭据。

返回

AuthCredential |null

PhoneAuthProvider.verifyPhoneNumber()

向指定的电话号码发送验证码,启动电话号码身份验证流程。

签名

verifyPhoneNumber(phoneOptions: PhoneInfoOptions | string, applicationVerifier: ApplicationVerifier): Promise<string>;

参数

参数 类型 说明
phoneOptions PhoneInfoOptions |字符串
applicationVerifier ApplicationVerifier 为了防止滥用,此方法还需要 ApplicationVerifier。此 SDK 包含基于 reCAPTCHA 的实现,即 RecaptchaVerifier

返回

承诺<字符串>

验证 ID 的 Promise,可传递给 PhoneAuthProvider.credential() 以标识此流程。

示例 1

const provider = new PhoneAuthProvider(auth);
const verificationId = await provider.verifyPhoneNumber(phoneNumber, applicationVerifier);
// Obtain verificationCode from the user.
const authCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
const userCredential = await signInWithCredential(auth, authCredential);

示例 2

使用 signInWithPhoneNumber 方法提供备用流程。

const confirmationResult = signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);
// Obtain verificationCode from the user.
const userCredential = confirmationResult.confirm(verificationCode);

示例

// 'recaptcha-container' is the ID of an element in the DOM.
const applicationVerifier = new RecaptchaVerifier('recaptcha-container');
const provider = new PhoneAuthProvider(auth);
const verificationId = await provider.verifyPhoneNumber('+16505550101', applicationVerifier);
// Obtain the verificationCode from the user.
const phoneCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
const userCredential = await signInWithCredential(auth, phoneCredential);