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;

パラメータ

パラメータ 説明
エラー 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 が含まれています。

戻り値:

Promise<文字列>

このフローを識別するために PhoneAuthProvider.credential() に渡すことができる確認 ID の Promise。

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