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

Чтобы включить вход в систему одним касанием для вернувшихся пользователей, вы можете предложить им сохранить свой пароль в 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
    });