כדי להפעיל כניסה בלחיצה אחת למשתמשים חוזרים, אפשר להציג למשתמשים בקשה לשמור את הסיסמה שלהם ב-Google. המשתמש יוכל להיכנס לחשבון באמצעות הסיסמאות השמורות באפליקציה ובאינטרנט.
כשמתחילים את תהליך שמירת הסיסמה, מוצג למשתמש דיאלוג בתחתית המסך שמאפשר לו לבחור אם הוא רוצה לשמור את הסיסמה ובאיזה חשבון Google הוא רוצה לשמור אותה.

הפעלת תיבת דו-שיח של גיליון מידע מלמטה לשמירת סיסמה
אחרי שמאמתים את שם המשתמש והסיסמה באמצעות ה-backend, צריך להפעיל את תיבת הדו-שיח לשמירת הסיסמה. שומרים את פרטי הכניסה בזיכרון בזמן האימות. אחרי שמוודאים שפרטי הכניסה תקינים, מפעילים את תיבת הדו-שיח של השמירה באופן הבא:
יוצרים אובייקט
SignInPasswordחדש. צריך לאתחל אותו עם מזהה המשתמש שבו הוא משתמש בשירות שלכם (לדוגמה, שם המשתמש או כתובת האימייל) והסיסמה שרוצים לשמור.private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */ private void savePassword() { SignInPassword signInPassword = new SignInPassword(userId, password); ...יצירת אובייקט
SavePasswordRequestSavePasswordRequest savePasswordRequest = SavePasswordRequest.builder().setSignInPassword(signInPassword).build();כדי להציג את תיבת הדו-שיח לשמירת הסיסמה מ-
Identity.getCredentialSavingClientולהפעיל את התהליך, מקבליםPendingIntent: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
});