כדי לאפשר למשתמשים חוזרים להיכנס לחשבון בהקשה אחת, אפשר לבקש מהם לשמור את הסיסמה שלהם ב-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); ...
יצירת אובייקט
SavePasswordRequest
SavePasswordRequest savePasswordRequest = SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
מקבלים
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); })
טיפול בתוצאות של שמירת סיסמאות
טיפול בתוצאה של תהליך שמירת הסיסמה ב-onActivityActivity:
@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
});