如要將密碼專用 Smart Lock 整合至 Android 應用程式,您必須在應用程式的啟動和登入流程中新增 Credentials API 呼叫。下圖顯示一般 Android 應用程式使用密碼專用 Smart Lock 的流程。
雖然有許多方法可以成功整合密碼專用 Smart Lock,而且整合的具體細節取決於應用程式的結構和使用者體驗,不過我們建議大多數應用程式採用以下流程。採用此流程的應用程式具有下列使用者體驗優勢:
- 如果服務中的現有使用者只儲存了單一憑證,就會立即登入,且使用者開啟應用程式時,會直接進入登入畫面。
- 如果使用者已儲存多個憑證或已停用自動登入功能,則必須先回應一個對話方塊,才能前往應用程式的登入檢視畫面。
- 如果使用者沒有儲存憑證或尚未註冊,只要輕觸一下就能選擇自己的名稱和電子郵件,接著系統就會將這些資訊自動傳送至登入或註冊檢視畫面,並預先填入這些資訊。
- 使用者登出時,應用程式可確保不會自動重新登入。
擷取憑證
- 應用程式啟動後,如果沒有任何使用者登入,請呼叫
CredentialsClient.request()
。 - 如果
Task
成功,請透過getResult().getCredential()
取得使用者的憑證,並用於登入。 - 如果
Task
失敗且例外狀況是ResolvableApiException
的執行個體,且getStatusCode()
傳回RESOLUTION_REQUIRED
,則需要使用者輸入內容才能挑選憑證。呼叫startResolutionForResult()
提示使用者選取已儲存的帳戶,然後呼叫getParcelableExtra(Credential.EXTRA_KEY)
取得使用者憑證,並使用這些憑證登入。
儲存憑證
如果
Task
因ApiException
而失敗,且getStatusCode()
傳回SIGN_IN_REQUIRED
,表示使用者沒有已儲存的憑證,因此必須使用目前的登入或註冊流程手動登入或註冊。使用者成功完成登入後,您可以讓使用者有機會儲存憑證,以便日後擷取 (步驟 5)。您可以擷取使用者電子郵件地址等登入提示,協助使用者更輕鬆快速地登入或註冊。使用者可以選取提示,並略過輸入憑證的步驟。如果您的應用程式會要求使用者登入,您可以選擇在初始憑證要求失敗後立即擷取提示,否則您可以等到使用者開始登入或註冊流程後立即擷取提示。
- 呼叫
CredentialsClient.getHintPickerIntent()
並啟動意圖提示使用者選取帳戶,然後呼叫getParcelableExtra(Credential.EXTRA_KEY)
來取得登入提示。 - 如果提示的使用者 ID 與現有使用者相符,請預先填入登入表單,讓使用者輸入密碼來登入。
- 如果提示中的使用者 ID 與現有使用者不符,請在申請表中預先填入使用者的 ID 和名稱,然後讓使用者建立新帳戶。
- 呼叫
-
使用者成功登入或建立帳戶後,請使用
CredentialsClient.save()
儲存使用者 ID 和密碼。如果使用者透過 Google 登入等聯合識別資訊提供者登入,請以使用者的電子郵件地址做為 ID 建立
Credential
物件,並以setAccountType
指定識別資訊提供者。
登出
- 當使用者登出時,請呼叫
CredentialsClient.disableAutoSignIn()
,防止使用者立即重新登入。停用自動登入功能也可讓使用者輕鬆切換不同帳戶 (例如切換工作帳戶和個人帳戶,或是共用裝置上的帳戶),而不需重新輸入登入資訊。
準備好將密碼專用 Smart Lock 整合到應用程式中了嗎? 快來試用看看用吧!