Android 整合流程

如要將密碼專用 Smart Lock 整合至 Android 應用程式,您必須在應用程式的 Credentials API 中新增啟動和登入流程。下圖顯示使用密碼專用 Smart Lock 的一般 Android 應用程式流程。

雖然有很多方法可以成功整合密碼專用 Smart Lock,而且整合的具體細節取決於應用程式的結構和應用程式的使用者體驗,但對於大多數應用程式而言,都建議採用下列流程。使用這個流程的應用程式有以下使用者體驗:

  • 如果服務現有的使用者儲存了一個憑證,系統會立即登入,而他們開啟應用程式時,會直接進入登入檢視畫面。
  • 如果使用者儲存了多個憑證,或已停用自動登入功能,則只需回應一個對話方塊,即可前往應用程式的登入檢視畫面。
  • 尚未儲存憑證或尚未註冊的使用者只要輕觸一下,就能選擇自己的名稱和電子郵件地址,並透過智慧功能傳送至登入或註冊檢視畫面,系統會預先填入這些資訊。
  • 使用者登出後,應用程式可確保使用者不會自動重新登入。

Smart Lock 登入流程圖

擷取憑證

  1. 應用程式啟動後,如果沒有使用者登入,請呼叫 CredentialsClient.request()
  2. 如果 Task 成功,請使用 getResult().getCredential() 取得使用者的憑證,並使用其登入。
  3. 如果 Task 失敗,且例外狀況是 ResolvableApiException 的執行個體,且 getStatusCode() 傳回 RESOLUTION_REQUIRED,則需要使用者輸入內容來選取憑證。呼叫 startResolutionForResult() 提示使用者選取已儲存的帳戶,然後呼叫 getParcelableExtra(Credential.EXTRA_KEY) 來取得使用者的憑證,並使用其登入。

儲存憑證

  1. 如果 Task 失敗並傳回 ApiException,且 getStatusCode() 傳回 SIGN_IN_REQUIRED,則使用者沒有已儲存的憑證,且必須使用您目前的登入或註冊流程手動登入或註冊。使用者成功登入後,您可以提供使用者儲存憑證以供日後擷取的機會 (步驟 5)。

    您可以擷取登入提示 (例如使用者的電子郵件地址),協助使用者登入或註冊更快速。使用者可以選取提示,並略過輸入憑證。如果應用程式要求使用者登入,您可以選擇在初始憑證要求失敗後立即擷取提示 (否則,您可以等待使用者啟動登入或註冊流程)。

    1. 呼叫 CredentialsClient.getHintPickerIntent() 並啟動意圖,提示使用者選取帳戶,然後呼叫 getParcelableExtra(Credential.EXTRA_KEY) 來取得登入提示。
    2. 如果提示的使用者 ID 與現有使用者相符,請在該表單中預先填入登入表單,並讓使用者輸入密碼。
    3. 如果提示的使用者 ID 與現有使用者不符,請在註冊表單中預先輸入使用者的 ID 和名稱,並讓使用者建立新帳戶。
  2. 使用者成功登入或建立帳戶之後,請使用 CredentialsClient.save() 儲存使用者 ID 和密碼。

    如果使用者是透過聯合登入 (例如 Google 登入) 登入,請建立 Credential 物件,並將使用者電子郵件地址做為 ID,並使用 setAccountType 指定識別資訊提供者。

登出

  1. 當使用者登出時,請呼叫 CredentialsClient.disableAutoSignIn() 以防止使用者立即重新登入。停用自動登入功能後,使用者便可輕鬆在帳戶之間切換 (例如在工作和個人帳戶之間切換,或在共用裝置上切換帳戶),而不必重新輸入登入資訊。

準備好將密碼專用 Smart Lock 整合至您的應用程式了嗎?快來試用看看用吧!