正在電子郵件動作中傳送狀態

您可以在傳送密碼重設或驗證使用者電子郵件的電子郵件動作時,透過繼續網址傳遞狀態。這樣操作完成後,使用者就能返回應用程式。此外,您可以指定是否要在安裝於行動應用程式 (而非網頁) 時,直接從行動應用程式處理電子郵件動作連結。

這在下列常見情境中非常實用:

  • 使用者 (目前尚未登入) 可能會嘗試存取需要登入的內容。然而,使用者可能忘記了自己的密碼,因而觸發重設密碼流程。流程結束時,使用者會預期返回先前要存取的應用程式區段。

  • 應用程式只能提供已驗證帳戶的存取權。例如,電子報可能會要求使用者先驗證電子郵件地址,才能訂閱。使用者會完成電子郵件驗證流程,並預期返回應用程式完成訂閱。

  • 而在其他情況下,使用者可能已從行動裝置啟動流程,並預期在完成驗證後返回行動應用程式,而非瀏覽器。

能夠透過繼續網址傳遞狀態是 Firebase 驗證提供的強大功能,可大幅改善使用者體驗。

在電子郵件動作中傳遞狀態/繼續網址

為了安全地傳遞繼續網址,您必須在 Firebase 主控台中,將該網址的網域新增為授權網域。方法是在「Authentication」(驗證) 部分中,將這個網域新增至「Sign-in method」分頁下方的「Authorized domains」清單 (如果尚未加入的話)。

傳送密碼重設電子郵件或驗證電子郵件時,必須提供 firebase.auth.ActionCodeSettings 執行個體。此介面使用以下參數:

參數 類型 說明
url 字串

設定在不同情況下具有不同意義的連結 (狀態/繼續網址):

  • 在網頁動作小工具中處理連結時,這就是 continueUrl 查詢參數中的深層連結。
  • 如果是直接在應用程式中處理連結,這是 Dynamic Link 深層連結中的 continueUrl 查詢參數。
iOS ({bundleId: string}|未定義) 設定 iOS 軟體包 ID。系統會嘗試在 iOS 應用程式中開啟連結 (如有安裝)。您必須在控制台註冊該 iOS 應用程式。
android ({packageName: string, installApp:boolean|undefined, minVersion: string|undefined}|undefined) 設定 Android 套件名稱。如果已安裝,系統會嘗試在 Android 應用程式中開啟連結。如果傳遞 installApp,則會指定在裝置支援且尚未安裝應用程式的情況下,安裝 Android 應用程式。如果提供這個欄位時沒有 packageName,系統會擲回錯誤,說明 packageName 必須和這個欄位一併提供。如果已指定 minimumVersion,且已安裝舊版應用程式,系統會將使用者導向 Play 商店,以便升級應用程式。您必須在控制台中註冊該 Android 應用程式。
handleCodeInApp (布林值|未定義) 指定先在行動應用程式或網頁連結中開啟電子郵件動作連結。預設值為 false。設為 true 時,動作代碼連結會以通用連結或 Android 應用程式連結的形式傳送,安裝完成後會由應用程式開啟。如果是錯誤情況,程式碼會先傳送至網頁小工具,安裝完成後繼續重新導向至應用程式。
dynamicLinkDomain (字串|未定義) 設定目前連結要使用 Firebase Dynamic Links 開啟的動態連結網域 (或子網域)。由於每項專案可以設定多個動態連結網域,這個欄位可讓您明確選擇一個網域。如未提供,預設會使用第一個網域。

以下範例說明如何利用自訂動態連結網域 example.page.link (iOS 應用程式 com.example.ios 或 Android 應用程式 com.example.android),傳送要先以 Firebase 動態連結的形式在行動應用程式中開啟的電子郵件驗證連結。如果尚未安裝,系統會安裝該應用程式,最低版本為 12。深層連結將包含接續網址酬載 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 驗證會使用 Firebase 動態連結。如要使用這項功能,您必須在 Firebase 控制台中設定 Dynamic Links。

  1. 啟用 Firebase Dynamic Links:

    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 應用程式處理這些連結,就必須在 Firebase 控制台的專案設定中指定 iOS 軟體包 ID。此外,您也必須指定 App Store ID 和 Apple Developer Team ID。
    2. 您也需在應用程式功能中,將 FDL 通用連結網域設為關聯網域。
    3. 如果您打算將應用程式發行到 iOS 8 以下的版本,則需要將 iOS 軟體包 ID 設定為傳入網址的自訂配置。
    4. 詳情請參閱接收 iOS Dynamic Links 操作說明

處理網頁應用程式中的電子郵件動作

您可以指定是否要先處理網頁應用程式的動作代碼連結,然後在成功完成後再重新導向至其他網頁或行動應用程式 (前提是該行動應用程式可供使用)。方法是將 firebase.auth.ActionCodeSettings 物件中的 handleCodeInApp 設為 false。雖然您不一定要提供 iOS 軟體包 ID 或 Android 套件名稱,但提供這些 ID 可讓使用者在完成電子郵件動作程式碼後,重新導回指定的應用程式。

這裡使用的網址是電子郵件動作範本區段中設定的網址。已佈建所有專案的預設 ID。如要進一步瞭解如何自訂電子郵件動作處理常式,請參閱自訂電子郵件處理常式

在此情況下,continueUrl 查詢參數中的連結會是 FDL 連結,其酬載是 ActionCodeSettings 物件中指定的 URL。雖然您不必任何其他依附元件就能攔截及處理應用程式傳入的連結,但我們還是建議您使用 FDL 用戶端程式庫,為您剖析深層連結。

處理電子郵件驗證等電子郵件動作時,您必須從深層連結剖析 oobCode 查詢參數的動作程式碼,然後透過 applyActionCode 套用變更,變更才會生效 (例如要驗證電子郵件)。

處理行動應用程式中的電子郵件動作

您可以指定是否要先在行動應用程式中處理動作程式碼連結 (若該連結已安裝)。使用 Android 應用程式時,您也可以透過 android.installApp 指定在裝置支援且尚未安裝的情況下,要安裝應用程式。如果使用者點擊連結的裝置不支援行動應用程式,則會改為透過網頁開啟。方法是將 firebase.auth.ActionCodeSettings 物件中的 handleCodeInApp 設為 true。此外,您也需要指定行動應用程式的 Android 套件名稱或 iOS 軟體包 ID。

在沒有行動應用程式可用的情況下,此處使用的備用網址即為電子郵件動作範本區段中設定的網址。系統會佈建所有專案的預設 ID。如要進一步瞭解如何自訂電子郵件動作處理常式,請參閱自訂電子郵件處理常式

在這種情況下,傳送給使用者的行動應用程式連結會是 FDL 連結,其酬載是動作代碼網址,在主控台中設定,使用查詢參數 oobCodemodeapiKeycontinueUrl。後者是 ActionCodeSettings 物件中指定的原始 URL。雖然您不必任何其他依附元件就能攔截及處理應用程式傳入的連結,但我們還是建議您使用 FDL 用戶端程式庫,為您剖析深層連結。動作程式碼可從行動應用程式直接套用,方法與在自訂電子郵件處理常式一節所述的網路流程中處理的方式類似。

處理電子郵件驗證等電子郵件動作時,您必須從深層連結剖析 oobCode 查詢參數的動作程式碼,然後透過 applyActionCode 套用變更,變更才會生效 (例如要驗證電子郵件)。