如要讓回訪使用者使用 One Tap 登入,您可以提示使用者將密碼儲存在 Google 帳戶中。使用者將可在應用程式和網站中使用已儲存的密碼登入。
開始儲存密碼流程時,系統會向使用者顯示底部面板對話方塊,讓他們選擇是否要儲存密碼,以及要將密碼儲存至哪個 Google 帳戶。
啟動密碼儲存底部彈出式對話方塊
您應在使用後端驗證使用者名稱和密碼後,啟動密碼儲存對話方塊。在驗證時將憑證保留在記憶體中。確認憑證有效後,請執行下列操作,啟動儲存對話方塊:
建立新的
SignInPassword
物件。您應使用使用者在服務中使用的使用者 ID (例如使用者名稱或電子郵件地址) 和要儲存的密碼,初始化這項資訊。private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */ private void savePassword() { SignInPassword signInPassword = new SignInPassword(userId, password); ...
建立
SavePasswordRequest
物件SavePasswordRequest savePasswordRequest = SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
取得
PendingIntent
,從Identity.getCredentialSavingClient
顯示密碼儲存對話方塊並啟動流程:Identity.getCredentialSavingClient(activity) .savePassword(savePasswordRequest) .addOnSuccessListener( result -> { startIntentSenderForResult( result.getPendingIntent().getIntentSender(), REQUEST_CODE_GIS_SAVE_PASSWORD, /* fillInIntent= */ null, /* flagsMask= */ 0, /* flagsValue= */ 0, /* extraFlags= */ 0, /* options= */ null); })
處理密碼儲存結果
在 onActivityResult 中處理密碼儲存流程的結果:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_GIS_SAVE_PASSWORD) {
if (resultCode == Activity.RESULT_OK) {
/* password was saved */
} else if (resultCode == Activity.RESULT_CANCELED) {
/* password saving was cancelled */
}
}
}
private ActivityResultLauncher<IntentSenderRequest> savePasswordHandler =
registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -> {
// handle intent result here
});