Сохраняйте пароли с помощью функции сохранения учетных данных
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Чтобы включить функцию входа одним касанием для вернувшихся пользователей, вы можете предложить им сохранить пароль в Google. Пользователи смогут входить с сохранёнными паролями в вашем приложении и на сайте.
При запуске процесса сохранения пароля пользователю будет представлено диалоговое окно в нижней части экрана, позволяющее ему выбрать, хочет ли он сохранить свой пароль и в какой учетной записи Google он хочет его сохранить.
Запустить диалоговое окно сохранения пароля
Диалог сохранения пароля следует открыть после аутентификации имени пользователя и пароля в бэкенде. Сохраните учётные данные в памяти во время аутентификации. После подтверждения корректности учётных данных откройте диалог сохранения, выполнив следующие действия:
Создайте новый объект SignInPassword . Он должен быть инициализирован идентификатором пользователя, используемым в вашем сервисе (например, именем пользователя или адресом электронной почты), и паролем, который вы хотите сохранить.
private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */
private void savePassword() {
SignInPassword signInPassword = new SignInPassword(userId, password);
...
Обработайте результат потока сохранения пароля в onActivityResult:
@OverridepublicvoidonActivityResult(intrequestCode,intresultCode,Intentdata){super.onActivityResult(requestCode,resultCode,data);if(requestCode==REQUEST_CODE_GIS_SAVE_PASSWORD){if(resultCode==Activity.RESULT_OK){/* password was saved */}elseif(resultCode==Activity.RESULT_CANCELED){/* password saving was cancelled */}}}
privateActivityResultLauncher<IntentSenderRequest>savePasswordHandler=registerForActivityResult(newActivityResultContracts.StartIntentSenderForResult(),result->{// handle intent result here});
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Save passwords with Credential Saving\n\n| **Caution:** One Tap for Android is deprecated. To ensure the continued security and usability of your app, [migrate to\n| Credential Manager](/identity/sign-in/credential-manager). Credential Manager supports passkey, password, and federated identity authentication (such as Sign-in with Google), stronger security, and a more consistent user experience.\n\nTo enable One Tap sign-in for returning users, you can prompt users to save\ntheir password with Google. The user will be able to sign in with their saved\npasswords in your app and on the web.\n\nWhen you start the save password flow, the user will be presented with a\nbottomsheet dialog allowing them to choose if they want to save their password\nand to which Google Account they want to save it.\n\nLaunch password save bottomsheet dialog\n---------------------------------------\n\nYou should launch the password save dialog after you have authenticated the\nusername and password with your backend. Keep the credentials in memory while\nauthenticating. After you have confirmed the credentials are valid, launch the\nsave dialog by doing the following:\n\n1. Create a new `SignInPassword` object. It should be initialized with the user\n id they use with your service (for example their username or email address)\n and password that you want to save.\n\n private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */\n private void savePassword() {\n SignInPassword signInPassword = new SignInPassword(userId, password);\n ...\n\n2. Create a `SavePasswordRequest` object\n\n SavePasswordRequest savePasswordRequest =\n SavePasswordRequest.builder().setSignInPassword(signInPassword).build();\n\n3. Get a `PendingIntent` to display the password save dialog from\n `Identity.getCredentialSavingClient` and launch the flow:\n\n Identity.getCredentialSavingClient(activity)\n .savePassword(savePasswordRequest)\n .addOnSuccessListener(\n result -\u003e {\n startIntentSenderForResult(\n result.getPendingIntent().getIntentSender(),\n REQUEST_CODE_GIS_SAVE_PASSWORD,\n /* fillInIntent= */ null,\n /* flagsMask= */ 0,\n /* flagsValue= */ 0,\n /* extraFlags= */ 0,\n /* options= */ null);\n })\n\nHandle password save results\n----------------------------\n\nHandle the result of the password save flow in onActivityResult: \n\n @Override\n public void onActivityResult(int requestCode, int resultCode, Intent data) {\n super.onActivityResult(requestCode, resultCode, data);\n if (requestCode == REQUEST_CODE_GIS_SAVE_PASSWORD) {\n if (resultCode == Activity.RESULT_OK) {\n /* password was saved */\n } else if (resultCode == Activity.RESULT_CANCELED) {\n /* password saving was cancelled */\n }\n }\n }\n\n**Note:** Consider using the [Activity Result API](https://developer.android.com/training/basics/intents/result) to manage Activity callbacks. \n\n private ActivityResultLauncher\u003cIntentSenderRequest\u003e savePasswordHandler =\n registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -\u003e {\n // handle intent result here\n });"]]