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

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

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

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

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

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

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

  • 一般に、ユーザーがAppleアプリでパスワードのリセットまたは電子メールの確認フローを開始すると、アプリ内でフローが完了することを期待します。継続URLを介して状態を渡す機能により、これが可能になります。

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

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

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

パスワードリセットメールまたは確認メールを送信するときは、 FIRActionCodeSettingsインスタンスを提供する必要があります。このインターフェースは、以下のパラメーターを取ります。

迅速

パラメータタイプ説明
URL

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

  • リンクがWebアクションウィジェットで処理される場合、これはcontinueUrlクエリパラメーターのディープリンクです。
  • リンクがアプリで直接処理される場合、これはダイナミックリンクのディープリンクのcontinueUrlクエリパラメーターです。
iOSBundleIDバンドルIDを設定します。これにより、Appleアプリがインストールされている場合、そのリンクを開こうとします。アプリはコンソールに登録する必要があります。バンドルIDが指定されていない場合、このフィールドの値はアプリのメインバンドルのバンドルIDに設定されます。
androidPackageNameAndroidパッケージ名を設定します。インストールされている場合、これはAndroidアプリでリンクを開こうとします。
androidInstallIfNotAvailableブールデバイスがAndroidアプリをサポートしていて、アプリがまだインストールされていない場合に、Androidアプリをインストールするかどうかを指定します。このフィールドがpackageNameなしで指定された場合、packageNameをこのフィールドと組み合わせて指定する必要があることを説明するエラーがスローされます。
androidMinimumVersionこのフローでサポートされているアプリの最小バージョン。 minimumVersionが指定されていて、古いバージョンのアプリがインストールされている場合、ユーザーはPlayストアに移動してアプリをアップグレードします。 Androidアプリはコンソールに登録する必要があります。
handleCodeInAppブールメールアクションリンクを最初にモバイルアプリで開くか、ウェブリンクで開くか。デフォルトはfalseです。 trueに設定すると、アクションコードリンクはユニバーサルリンクまたはAndroidアプリリンクとして送信され、インストールされている場合はアプリによって開かれます。誤ったケースでは、コードは最初にWebウィジェットに送信され、次に続行すると、インストールされている場合はアプリにリダイレクトされます。
dynamicLinkDomainFirebaseダイナミックリンクを使用して現在のリンクを開く場合に使用するダイナミックリンクドメイン(またはサブドメイン)を設定します。プロジェクトごとに複数の動的リンクドメインを構成できるため、このフィールドでは明示的に1つを選択できます。何も指定されていない場合、デフォルトで最初のドメインが使用されます。

Objective-C

パラメータタイプ説明
URL NSString

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

  • リンクがWebアクションウィジェットで処理される場合、これはcontinueUrlクエリパラメーターのディープリンクです。
  • リンクがアプリで直接処理される場合、これはダイナミックリンクのディープリンクのcontinueUrlクエリパラメーターです。
iOSBundleID NSStringバンドルIDを設定します。これにより、Appleアプリがインストールされている場合、そのリンクを開こうとします。アプリはコンソールに登録する必要があります。
androidPackageName NSString Androidパッケージ名を設定します。インストールされている場合、これはAndroidアプリでリンクを開こうとします。
androidInstallIfNotAvailable BOOLデバイスがAndroidアプリをサポートしていて、アプリがまだインストールされていない場合に、Androidアプリをインストールするかどうかを指定します。このフィールドがpackageNameなしで指定された場合、packageNameをこのフィールドと組み合わせて指定する必要があることを説明するエラーがスローされます。
androidMinimumVersion NSStringこのフローでサポートされているアプリの最小バージョン。 minimumVersionが指定されていて、古いバージョンのアプリがインストールされている場合、ユーザーはPlayストアに移動してアプリをアップグレードします。 Androidアプリはコンソールに登録する必要があります。
handleCodeInApp BOOLメールアクションリンクを最初にモバイルアプリで開くか、ウェブリンクで開くか。デフォルトはfalseです。 trueに設定すると、アクションコードリンクはユニバーサルリンクまたはAndroidアプリリンクとして送信され、インストールされている場合はアプリによって開かれます。誤ったケースでは、コードは最初にWebウィジェットに送信され、次に続行すると、インストールされている場合はアプリにリダイレクトされます。
dynamicLinkDomain NSString Firebaseダイナミックリンクを使用して現在のリンクを開く場合に使用するダイナミックリンクドメイン(またはサブドメイン)を設定します。プロジェクトごとに複数の動的リンクドメインを構成できるため、このフィールドでは明示的に1つを選択できます。何も指定されていない場合、デフォルトで最初のドメインが使用されます。

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

迅速


var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android",
                                         installIfNotAvailable:true,
                                         minumumVersion:"12")
// When multiple custom dynamic link domains are defined, specify which one to use.
actionCodeSettings.dynamicLinkDomain = "example.page.link"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Objective-C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
 // When multiple custom dynamic link domains are defined, specify which one to use.
 actionCodeSettings.dynamicLinkDomain = @"example.page.link";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"
                     installIfNotAvailable:YES
                            minimumVersion:'12'];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

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

  1. Firebase DynamicLinksを有効にする:

    1. Firebaseコンソールで、[ダイナミックリンク]セクションを開きます。
    2. ダイナミックリンクの規約にまだ同意しておらず、ダイナミックリンクドメインを作成していない場合は、ここで同意してください。

      すでにダイナミックリンクドメインを作成している場合は、それに注意してください。ダイナミックリンクドメインは通常、次の例のようになります。

      example.page.link

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

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

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

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

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

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

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

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

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

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

モバイルアプリケーションがインストールされている場合は、モバイルアプリケーション内でアクションコードリンクを最初に処理するかどうかを指定できます。 Androidアプリケーションでは、 androidInstallIfNotAvailableを介して、デバイスがアプリをサポートしていて、まだインストールされていない場合にアプリをインストールするように指定することもできます。モバイルアプリケーションをサポートしていないデバイスからリンクをクリックすると、代わりにWebページからリンクが開きます。これは、 FIRActionCodeSettings (Obj-C)またはActionCodeSettings (Swift)オブジェクトでhandleCodeInApptrueに設定することによって行われます。モバイルアプリケーションのAndroidパッケージ名またはバンドルIDも指定する必要があります。モバイルアプリが利用できない場合にここで使用されるフォールバックWebURLは、電子メールアクションテンプレートセクションで構成されたものです。デフォルトのものがすべてのプロジェクトにプロビジョニングされます。電子メールアクションハンドラーをカスタマイズする方法の詳細については、電子メールハンドラーのカスタマイズを参照してください。

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

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