PhoneAuthProvider class

產生 PhoneAuthCredential 的供應商。

PhoneAuthProvider 無法在 Node.js 環境中運作。

簽名:

export declare class PhoneAuthProvider 

建構函式

建構函式 修飾符 說明
(建構函式)(驗證) 建構 PhoneAuthProvider 類別的新例項

屬性

屬性 修飾符 類型 說明
電話號碼 static 「phone」 請一律設為 SignInMethod.PHONE。
PROVIDER_ID static 「phone」 請一律設為「ProviderId」.PHONE。
providerId 「電話號碼」 請一律設為「ProviderId」.PHONE。

方法

方法 修飾符 說明
credential(verificationId, verificationCode) static 根據 PhoneAuthProvider.verifyPhoneNumber() 提供的驗證 ID 和傳送到使用者行動裝置的代碼,建立電話驗證憑證。
credentialFromError(錯誤) static 傳送錯誤時會傳回 AuthCredential
credentialFromResult(使用者憑證) 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。
驗證碼 字串 傳送至使用者行動裝置的驗證碼。

傳回:

電話驗證憑證

驗證提供者憑證。

範例 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;

參數

參數 類型 說明
錯誤 FirebaseError 產生憑證時發生錯誤。

傳回:

AuthCredential |空值

PhoneAuthProvider.credentialFromResult()

UserCredential 產生 AuthCredential

簽名:

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

參數

參數 類型 說明
使用者憑證 使用者憑證 使用者憑證。

傳回:

AuthCredential |空值

PhoneAuthProvider.verifyPhoneNumber()

將驗證碼傳送到指定的電話號碼,以啟動電話號碼驗證流程。

簽名:

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

參數

參數 類型 說明
電話選項 PhoneInfoOptions |字串
應用程式驗證器 ApplicationVerifier 為防範濫用行為,這種方法還需搭配 ApplicationVerifier。這個 SDK 包含以 reCAPTCHA 為基礎的導入作業 RecaptchaVerifier

傳回:

承諾<字串>

驗證 ID 承諾。可傳遞至 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);