如要將密碼專用 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
傳回SIGN_IN_REQUIRED
,表示使用者沒有已儲存的憑證,且必須透過目前的登入或註冊流程手動登入或註冊。getStatusCode()
使用者成功登入後,您可以讓使用者有機會儲存憑證,以供日後擷取 (步驟 5)。您可擷取登入提示 (例如使用者的電子郵件地址),協助使用者輕鬆快速地登入或註冊。使用者只要選取提示,即可略過輸入憑證的流程。如果您的應用程式要求使用者登入,可以選擇在初始憑證要求失敗後立即擷取提示 (否則,可以等到使用者啟動登入或註冊流程後,再擷取提示)。
- 呼叫
CredentialsClient.getHintPickerIntent()
並啟動意圖提示使用者選取帳戶,然後呼叫getParcelableExtra(Credential.EXTRA_KEY)
來取得登入提示。 - 如果提示的使用者 ID 與現有使用者相符,請在登入表單中預先填入這項資訊,讓使用者輸入密碼即可登入。
- 如果提示的使用者 ID 與現有的使用者不相符,請在註冊表單中預先填入使用者的 ID 和名稱,讓使用者建立新帳戶。
- 呼叫
-
使用者成功登入或建立帳戶後,請使用
CredentialsClient.save()
儲存使用者 ID 和密碼。如果使用者是透過聯合識別資訊提供者 (例如 Google 登入) 登入,請建立
Credential
物件,並以使用者的電子郵件地址做為 ID,並使用setAccountType
指定識別資訊提供者。
登出
- 當使用者登出時,請呼叫
CredentialsClient.disableAutoSignIn()
,防止使用者立即重新登入。停用自動登入功能後,使用者也能輕鬆切換帳戶,例如在工作和個人帳戶之間,或是共用裝置上的帳戶,不必重新輸入登入資訊。
準備好將密碼專用 Smart Lock 整合至您的應用程式了嗎? 快來試用看看用吧!