產生 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
簽名:
static readonly PROVIDER_ID: 'phone';
PhoneAuthProvider.providerId
簽名:
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);