שמירת סיסמאות באמצעות 'שמירת פרטי הכניסה'

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

טיפול בתוצאות של שמירת סיסמאות

טיפול בתוצאה של תהליך שמירת הסיסמה ב-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
    });