Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

電子メールアクションで状態を渡す

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

パスワード リセットの電子メール アクションを送信するとき、またはユーザーの電子メールを確認するときに、続行 URL を介して状態を渡すことができます。これにより、ユーザーはアクションの完了後にアプリに戻ることができます。さらに、Web ページではなくモバイル アプリケーションがインストールされている場合に、電子メール アクション リンクをモバイル アプリケーションから直接処理するかどうかを指定できます。

これは、次の一般的なシナリオで非常に役立ちます。

  • 現在ログインしていないユーザーが、ユーザーのサインインを必要とするコンテンツにアクセスしようとしている可能性があります。ただし、ユーザーがパスワードを忘れたため、パスワードのリセット フローがトリガーされた可能性があります。フローの最後に、ユーザーはアクセスしようとしていたアプリのセクションに戻ることを期待しています。

  • アプリケーションは、確認済みのアカウントへのアクセスのみを提供する場合があります。たとえば、ニュースレターでは、ユーザーが購読する前に電子メールを確認する必要がある場合があります。ユーザーはメール確認フローを通過し、アプリに戻ってサブスクリプションを完了することを期待します。

  • また、ユーザーがモバイル デバイスからフローを開始し、検証後にブラウザーではなくモバイル アプリに戻ることを期待している場合もあります。

継続 URL を介して状態を渡す機能を持つことは、Firebase Auth が提供する強力な機能であり、ユーザー エクスペリエンスを大幅に向上させることができます。

メールアクションで状態/続行 URL を渡す

続行 URL を安全に渡すには、その URL のドメインをFirebase コンソールで承認済みドメインとして追加する必要があります。これは、[認証] セクションで、[サインイン方法] タブの [承認されたドメイン] のリストにこのドメインが追加されていない場合は追加することによって行われます。

パスワード リセット メールまたは確認メールを送信する場合は、 firebase.auth.ActionCodeSettingsインスタンスを指定する必要があります。このインターフェイスは、次のパラメーターを取ります。

パラメータタイプ説明
urlストリング

異なるコンテキストで異なる意味を持つリンク (状態/続行 URL) を設定します。

  • リンクが Web アクション ウィジェットで処理される場合、これはcontinueUrlクエリ パラメーターのディープ リンクです。
  • リンクがアプリで直接処理される場合、これはダイナミック リンクのディープ リンクのcontinueUrlクエリ パラメータです。
iOS ({bundleId: 文字列}|未定義) iOS バンドル ID を設定します。インストールされている場合、iOS アプリでリンクを開こうとします。 iOS アプリはコンソールに登録する必要があります。
android ({packageName: 文字列、installApp:boolean|未定義、最小バージョン: 文字列|未定義}|未定義) Android パッケージ名を設定します。インストールされている場合、Android アプリでリンクを開こうとします。 installAppが渡された場合、デバイスが Android アプリをサポートしており、アプリがまだインストールされていない場合に、Android アプリをインストールするかどうかを指定します。このフィールドがpackageNameなしで指定された場合、このフィールドとともにpackageNameを指定する必要があることを説明するエラーがスローされます。 minimumVersionが指定されていて、古いバージョンのアプリがインストールされている場合、ユーザーは Play ストアに移動してアプリをアップグレードします。 Android アプリはコンソールに登録する必要があります。
handleCodeInApp (ブール値|未定義)電子メール アクション リンクが最初にモバイル アプリまたは Web リンクで開かれるかどうか。デフォルトは false です。 true に設定すると、アクション コード リンクはユニバーサル リンクまたは Android アプリ リンクとして送信され、インストールされている場合はアプリによって開かれます。 false の場合、コードは最初に Web ウィジェットに送信され、インストールされている場合は続行時にアプリにリダイレクトされます。
dynamicLinkDomain (文字列|未定義) Firebase Dynamic Links を使用してリンクを開く場合に、現在のリンクに使用するダイナミック リンク ドメイン (またはサブドメイン) を設定します。プロジェクトごとに複数のダイナミック リンク ドメインを設定できるため、このフィールドで明示的に 1 つを選択できます。何も指定しない場合、デフォルトで最初のドメインが使用されます。

次の例は、カスタム ダイナミック リンク ドメインexample.page.link (iOS アプリcom.example.iosまたは Android アプリcom.example.androidインストールされていない場合はアプリがインストールされ、最小バージョンは12です)。ディープ リンクには、継続 URL ペイロードhttps://www.example.com/?email=user@example.comが含まれます。

var actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  handleCodeInApp: true,
  // When multiple custom dynamic link domains are defined, specify which
  // one to use.
  dynamicLinkDomain: "example.page.link"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

Firebase Auth は、モバイル アプリケーションで開くことを意図したリンクを送信するときにFirebase Dynamic Linksを使用します。この機能を使用するには、Firebase コンソールでダイナミック リンクを構成する必要があります。

  1. Firebase ダイナミック リンクを有効にします。

    1. Firebase コンソールで、[ Dynamic Links]セクションを開きます。
    2. Dynamic Links の利用規約に同意して Dynamic Links ドメインを作成していない場合は、ここで行ってください。

      Dynamic Links ドメインをすでに作成している場合は、メモしておいてください。通常、Dynamic Links ドメインは次の例のようになります。

      example.page.link

      この値は、受信リンクをインターセプトするように Apple または Android アプリを構成するときに必要になります。

  2. Android アプリケーションの構成:

    1. これらのリンクを Android アプリケーションから処理する場合は、Firebase コンソールのプロジェクト設定で Android パッケージ名を指定する必要があります。さらに、アプリケーション証明書の SHA-1 および SHA-256 を提供する必要があります。
    2. また、 AndroidManifest.xmlファイルでディープ リンクのインテント フィルターを構成する必要があります。
    3. 詳細については、 Android Dynamic Links の受信手順を参照してください。
  3. iOS アプリケーションの構成:

    1. これらのリンクを iOS アプリケーションから処理する場合は、iOS バンドル ID を Firebase コンソール プロジェクト設定で指定する必要があります。さらに、App Store ID と Apple Developer Team ID も指定する必要があります。
    2. また、FDL ユニバーサル リンク ドメインをアプリケーション機能の関連ドメインとして構成する必要があります。
    3. アプリケーションを iOS バージョン 8 以下に配布する場合は、受信 URL のカスタム スキームとして iOS バンドル ID を設定する必要があります。
    4. 詳細については、 iOS Dynamic Links の受信手順を参照してください。

Web アプリケーションでの電子メール アクションの処理

モバイル アプリケーションが使用可能な場合、最初に Web アプリケーションからのアクション コード リンクを処理し、正常に完了した後に別の Web ページまたはモバイル アプリケーションにリダイレクトするかどうかを指定できます。これは、 firebase.auth.ActionCodeSettingsオブジェクトでhandleCodeInAppfalseに設定することによって行われます。 iOS バンドル ID または Android パッケージ名は必須ではありませんが、それらを提供すると、ユーザーは電子メール アクション コードの完了時に指定されたアプリにリダイレクトすることができます。

ここで使用される Web URL は、電子メール アクション テンプレート セクションで構成されたものです。デフォルトの 1 つがすべてのプロジェクトにプロビジョニングされます。メール アクション ハンドラーをカスタマイズする方法の詳細については、メール ハンドラーのカスタマイズを参照してください。

この場合、 continueUrlクエリ パラメータ内のリンクは、ペイロードがActionCodeSettingsオブジェクトで指定されたURLである FDL リンクになります。追加の依存関係なしでアプリからの着信リンクをインターセプトして処理できますが、FDL クライアント ライブラリを使用してディープ リンクを解析することをお勧めします。

メール検証などのメール アクションを処理する場合、 oobCodeクエリ パラメーターのアクション コードをディープ リンクから解析し、 applyActionCodeを介して適用して変更を有効にする (つまり、メールを検証する) 必要があります。

モバイル アプリケーションでの電子メール アクションの処理

モバイル アプリケーションがインストールされている場合、最初にモバイル アプリケーション内でアクション コード リンクを処理するかどうかを指定できます。 Android アプリケーションでは、デバイスがサポートしていてまだインストールされていない場合に、 android.installAppを介してアプリをインストールすることを指定することもできます。モバイル アプリケーションをサポートしていないデバイスからリンクをクリックすると、代わりに Web ページからリンクが開かれます。これは、 firebase.auth.ActionCodeSettingsオブジェクトでhandleCodeInApptrueに設定することによって行われます。モバイル アプリケーションの Android パッケージ名または iOS バンドル ID も指定する必要があります。

モバイル アプリが使用できない場合にここで使用される代替 Web URL は、電子メール アクション テンプレート セクションで構成されたものです。デフォルトの 1 つがすべてのプロジェクトにプロビジョニングされます。メール アクション ハンドラーをカスタマイズする方法の詳細については、メール ハンドラーのカスタマイズを参照してください。

この場合、ユーザーに送信されるモバイル アプリ リンクは、コンソールで構成されたアクション コード URL をペイロードとする FDL リンクであり、クエリ パラメータoobCodemodeapiKey 、およびcontinueUrlを使用します。後者は、 ActionCodeSettingsオブジェクトで指定された元のURLになります。追加の依存関係なしでアプリからの着信リンクをインターセプトして処理できますが、FDL クライアント ライブラリを使用してディープ リンクを解析することをお勧めします。アクション コードは、電子メール ハンドラーのカスタマイズセクションで説明されている Web フローから処理される方法と同様に、モバイル アプリケーションから直接適用できます。

メール検証などのメール アクションを処理する場合、 oobCodeクエリ パラメーターのアクション コードをディープ リンクから解析し、 applyActionCodeを介して適用して変更を有効にする (つまり、メールを検証する) 必要があります。