Auth Tab 提供安全且簡化的驗證流程,可在 Android 應用程式中使用。建立及啟動 AuthTabIntent
後,即可叫用專門的自訂分頁,管理端對端驗證體驗。這個分頁的功能有限,但可讓使用者專注於當前工作。完成後,分頁會使用 https 或自訂結構定義,將結果回呼至您的應用程式。


從 Chrome 137 開始,Auth Tab 可直接取代現有的 Custom Tabs 驗證整合。如果使用者的裝置不支援「驗證」分頁,系統會自動改用「自訂分頁」。如要從自訂分頁遷移至驗證分頁,只要修改幾行程式碼即可。
運作方式
使用「驗證」分頁時,用戶端應用程式會啟動專用的自訂分頁,顯示載入網址的瀏覽器視窗,其中包含預期的驗證頁面。完成後,Auth Tab 會使用回呼傳回驗證結果。
驗證完成後,如果系統導覽至先前提供的回呼重新導向 URI,系統會擷取重新導向,並透過回呼傳回給用戶端應用程式。如果是使用 https 結構定義的重新導向,瀏覽器會使用 Digital Asset Links 驗證重新導向網域和用戶端應用程式是否屬於同一位發布者。
用戶端會使用提供的回呼,接收含有重新導向配置 (或 https 的重新導向主機和路徑) 的導覽 URI。這項資料包括結果代碼,以及驗證介面提供的任何其他資料。您可以使用這項資料驗證驗證作業,或處理非成功情境。
為什麼需要「授權」分頁?
在「驗證」分頁推出前,您可以使用標準的 Custom Tabs intent 來支援驗證流程。建議使用「驗證」分頁,因為這樣不僅能提升安全性、簡化流程,還能從用戶端程式碼中抽象化部分內部驗證程序。因此,您會發現「驗證」分頁提供更優質的體驗。
安全再升級
在一般的自訂分頁實作中,需要意圖才能接收處理驗證的瀏覽器視窗資料。這需要額外程式碼,且可能會干擾應用程式的意圖。使用驗證分頁時,系統會透過回呼接收資料,並在 Android API 和用戶端應用程式之間直接傳輸資料。
精簡流暢的使用體驗
在自訂分頁中,使用者可以存取瀏覽器的其他功能,這可能不適合驗證流程。驗證分頁提供精簡的使用體驗,移除標準自訂分頁中的大多數自訂選項。如果是 Chrome 瀏覽器,則包括縮小按鈕、長按內容選單、輕觸搜尋,以及「在 Chrome 中開啟」、「加入書籤」、「下載」、「分享」和「新增至主畫面」等選單項目。
驗證分頁仍保留瀏覽器自動填入先前儲存的密碼和付款資訊、向後或向前瀏覽、重新整理、顯示頁面資訊、要求頁面的電腦版,以及提供翻譯的功能。
資料抽象化
只要導入「驗證」分頁,就不需要意圖從瀏覽器接收資料,也不需要先前在 AndroidManifest.xml
中為驗證功能正常運作而加入的意圖篩選器。這可簡化用戶端作業。如果使用者裝置無法使用 Auth Tab,用戶端程式碼仍可納入部分功能,以提供與自訂分頁的向後相容性。
實作驗證分頁
驗證分頁需要 AndroidX 瀏覽器驗證程式庫。您可以在專案 build.gradle
檔案的依附元件部分新增 AndroidX 瀏覽器程式庫。這些 API 適用於 Alpha 版。在建構檔案中新增下列內容:
dependencies {
implementation 'androidx.browser:browser:1.9.0'
}
啟動「驗證」分頁前,請先宣告 ActivityResultLauncher
,其中會採用 ActivityResultCaller
和 ActivityResultCallback
。這項作業會在建立活動或片段前完成:
// In your activity
private final ActivityResultLauncher<Intent> mLauncher =
AuthTabIntent.registerActivityResultLauncher(this, this::handleAuthResult);
private void handleAuthResult(AuthResult result) {
String message = switch (result.resultCode) {
case AuthTabIntent.RESULT_OK -> "Received auth result.";
case AuthTabIntent.RESULT_CANCELED -> "AuthTab canceled.";
case AuthTabIntent.RESULT_VERIFICATION_FAILED -> "Verification failed.";
case AuthTabIntent.RESULT_VERIFICATION_TIMED_OUT -> "Verification timed out.";
}
if (result.resultCode == AuthTabIntent.RESULT_OK) {
message += " Uri: " + result.resultUri;
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
接著,使用 AuthTabIntent.Builder
建構 AuthTabIntent
,然後呼叫 launch
方法。啟動方法會根據您需要的配置,接受下列其中一組參數:
redirectScheme:如果是自訂重新導向配置,瀏覽器會重新導向並傳回具有所提供配置的 URI。
redirectHost、redirectPath:如果是 https 重新導向配置,API 需要個別的主機和路徑,瀏覽器才能偵測到重新導向並傳回 URI。使用 https 時,必須通過 Digital Asset Links 驗證。
private void launchAuthTab() {
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth"), "mycustomscheme");
}
private void launchAuthTabHttps() {
String host = "your_host";
String path = "your_path";
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
}
從自訂分頁遷移至驗證分頁
修改 Custom Tabs intent,將其更新為新的 Auth Tab intent,即可更新現有的 Custom Tabs 驗證實作。加入程式碼後,找出「自訂分頁」意圖,並修改為新的「驗證分頁」意圖。
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
customTabsIntent.launchUrl(context, uri)
// change to -->
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", "mycustomscheme");
/* - OR - */
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
改用自訂分頁
部分實作方式可能需要驗證,但使用者裝置未配備處理驗證分頁的工具。舉例來說,如果預設瀏覽器不支援驗證分頁,或預設瀏覽器版本未達到必要等級,就可能發生這種情況。在這些情況下,如果瀏覽器支援自訂分頁,系統會自動啟動自訂分頁,而非 Auth Tab 意圖。
您可以使用 CustomTabsClient#isAuthTabSupported()
檢查瀏覽器是否支援 Auth Tab。應用程式可根據瀏覽器功能,動態選擇啟動「驗證分頁」或「自訂分頁」流程。如要妥善處理不支援 Auth Tab 的情況,請新增 Auth Tab 實作,同時保留現有的自訂分頁程式碼,以處理驗證流程做為備援。
請注意處理可能傳送至 ActivityResultCallback
或活動意圖的資料。請注意,如果使用 AuthTabIntent
啟動備用體驗,但目前的瀏覽器不支援 Auth Tab,應用程式會在關閉自訂分頁時收到 Activity.RESULT_CANCELED
結果。
如要查看 Auth Tab 實作範例 (可回退至 Custom Tabs),請參閱 Android Browser Helper 程式庫。