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. 如果 TaskApiException 而失敗,且 getStatusCode() 傳回 SIGN_IN_REQUIRED,表示使用者沒有已儲存的憑證,因此必須使用目前的登入或註冊流程手動登入或註冊。使用者成功完成登入後,您可以讓使用者有機會儲存憑證,以便日後擷取 (步驟 5)。

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

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

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

登出

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

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