テスト用電話番号の登録

このドキュメントでは、開発用に電話番号を Identity Platform に登録する方法について説明します。これにより、電話ログインや多要素認証などの SMS メッセージの送信が必要な認証方法をテストできます。

テスト用の電話番号(自身が実際に所有する番号ではなく)を使用すると、次のようなメリットがあります。

  • iOS や Android のエミュレータとは、シームレスに統合されます。
  • 実際の SMS を送信する際のオーバーヘッドが不要になります。
  • 同じ電話番号で連続してテストを実施しても、スロットルが発生しません。
  • セキュリティ チェックでブロックされることなく、統合テストを作成できます。
  • 使用量の割り当ては消費されません。

開発用に最大 10 個の電話番号を登録できます。

テスト用電話番号の登録

テスト用電話番号を登録するには:

  1. Google Cloud コンソールで [ID プロバイダ] ページに移動します。
    [ID プロバイダ] ページに移動

  2. 電話認証をテストする場合は、プロバイダのリストで電話認証を見つけ、[編集] アイコンをクリックします。多要素認証をテストする場合は、[多要素 SMS] タブを選択し、[編集] をクリックします。

  3. [テスト用電話番号] で、登録する電話番号と確認コードを入力します。

    電話番号は E.164 形式を使用してください。既存の Identity Platform ユーザーにすでに割り当てられている番号は使用できません。確認コードは 6 桁の数字でなければなりません。セキュリティ上の理由から、推測しにくい数値を選び、+1 123-456-7890 のようなわかりやすいパターンは避けてください。

  4. [保存] をクリックします。

テスト用の電話番号は、Identity Platform で実際の電話番号と同様に扱われるため、電話番号を安全に保存して定期的にローテーションしてください。

手動テスト

アプリでテスト用の電話番号をすぐに使い始めることができます。直接使用することも、iOS エミュレータや Android エミュレータを使用することもできます。テスト用の電話番号でログインする場合、SMS 確認コードは送信されません。代わりに、テスト番号の作成時に登録したコードを入力します。

ログイン後には、テスト用の電話番号を使用した Identity Platform ユーザーが作成されます。有効な ID トークンを含め、このユーザーの動作とプロパティは実際のユーザーと同じです。これは、このユーザーがすべてのアプリとサービスにアクセスできることを意味します。

テストユーザーからのアクセスを制限するには、制限された権限を持つテストのロールを作成し、カスタム クレームを使用してそのロールを割り当てることを検討してください。

統合テスト

手動テストに加えて、Client SDK には統合テストの作成に役立つ API が含まれています。これらの API を使用すると、reCAPTCHA とアプリの確認の要件を無効にして、自動化での要件の回避が容易になります。

次の例は、電話番号を使用したユーザーのログインをテストする方法を示しています。

JaveScript

// Turn off phone app verification.
firebase.auth().settings.appVerificationDisabledForTesting = true;

var phoneNumber = "+16505554567";
var testVerificationCode = "123456";

// Render a fake reCAPTCHA and resolve without app verification.
var appVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');
// signInWithPhoneNumber will call appVerifier.verify(), which will resolve
// with a fake reCAPTCHA response.
firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)
  .then(function (confirmationResult) {
    // confirmationResult can resolve using testVerificationCode.
    return confirmationResult.confirm(testVerificationCode)
  }).catch(function (error) {
    // Error; SMS not sent
    // ...
  });

アプリの確認が無効になっている場合、可視および不可視の模擬 reCAPTCHA 検証ツールの動作は異なります。

  • 可視の reCAPTCHA: ユーザーのクリックをシミュレートするため、reCAPTCHA は少し遅れて自動的に解決されます。

  • 不可視の reCAPTCHA: アプリの確認をシミュレートするため、reCAPTCHA は appVerifier.verify() が呼び出されたときに自動的に解決されます。

模擬 reCAPTCHA は、解決または期限切れになるとコールバックをトリガーします。

次のステップ