حفظ كلمات المرور باستخدام ميزة "حفظ بيانات الاعتماد"

لتفعيل تسجيل الدخول بنقرة واحدة للمستخدمين المكرّري الزيارة، يمكنك الطلب من المستخدمين حفظ كلمة مرورهم باستخدام حساب 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
    });