Сохраняйте пароли с помощью функции сохранения учетных данных

Чтобы включить функцию входа одним касанием для вернувшихся пользователей, вы можете предложить им сохранить пароль в Google. Пользователи смогут входить с сохранёнными паролями в вашем приложении и на сайте.

При запуске процесса сохранения пароля пользователю будет представлено диалоговое окно в нижней части экрана, позволяющее ему выбрать, хочет ли он сохранить свой пароль и в какой учетной записи Google он хочет его сохранить.

Сохранить скриншот пароля

Запустить диалоговое окно сохранения пароля

Диалог сохранения пароля следует открыть после аутентификации имени пользователя и пароля в бэкенде. Сохраните учётные данные в памяти во время аутентификации. После подтверждения корректности учётных данных откройте диалог сохранения, выполнив следующие действия:

  1. Создайте новый объект SignInPassword . Он должен быть инициализирован идентификатором пользователя, используемым в вашем сервисе (например, именем пользователя или адресом электронной почты), и паролем, который вы хотите сохранить.

    private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */
    private void savePassword() {
        SignInPassword signInPassword = new SignInPassword(userId, password);
        ...
    
  2. Создайте объект SavePasswordRequest

    SavePasswordRequest savePasswordRequest =
        SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
    
  3. Получите 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
    });