Android 整合流程

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

雖然有很多方式可以成功整合密碼專用 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 傳回 SIGN_IN_REQUIRED,表示使用者沒有已儲存的憑證,且必須透過目前的登入或註冊流程手動登入或註冊。getStatusCode()使用者成功登入後,您可以讓使用者有機會儲存憑證,以供日後擷取 (步驟 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 整合至您的應用程式了嗎? 快來試用看看用吧!