재사용자에게 원탭 로그인을 사용 설정하려면 사용자에게 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
});