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

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

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

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