כדי להפעיל כניסה בלחיצה אחת למשתמשים חוזרים, אפשר להציג למשתמשים בקשה לשמור את הסיסמה שלהם ב-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); ...
יצירת אובייקט
SavePasswordRequest
SavePasswordRequest 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
});