استعادة بيانات اعتماد التطبيق عند إعداد جهاز جديد

تتيح ميزة استعادة بيانات الاعتماد في "مدير بيانات الاعتماد" للمستخدمين استعادة حسابات التطبيقات عند إعداد جهاز جديد. تتوفّر واجهة برمجة التطبيقات هذه في إصدار للمعاينة من قِبل المطوّرين وعلى جميع الأجهزة التي تعمل بالإصدار 9 من نظام التشغيل Android أو الإصدارات الأحدث والإصدار 242200000 أو الإصدارات الأحدث من "خدمات Google Play" (GMS). تشمل مزايا ميزة "استعادة بيانات الاعتماد" ما يلي:

  • سلاسة تجربة المستخدم: يمكن للمستخدمين استعادة حساباتهم على التطبيقات بدون الحاجة إلى تسجيل الدخول يدويًا إلى كل تطبيق على حدة.
  • زيادة تفاعل المستخدمين: من المرجّح أن يواصل المستخدمون استخدام تطبيقك إذا كان بإمكانهم استعادة حساباتهم عند إعداد جهاز جديد.
  • تقليل الجهد المبذول في التطوير: تم دمج ميزة "استعادة بيانات الاعتماد" مع "مدير بيانات الاعتماد"، لذا يمكن للمطوّرين الذين يتيحون حاليًا مفاتيح المرور إضافة إمكانات استعادة بيانات الاعتماد.

آلية العمل

يمكنك استخدام ميزة "استعادة بيانات الاعتماد" لإنشاء بيانات الاعتماد ذات الصلة والحصول عليها ومحوها.

  1. إنشاء بيانات اعتماد الاستعادة: عند تسجيل المستخدم الدخول إلى تطبيقك، أنشئ بيانات اعتماد استعادة مرتبطة بحسابه. يتم تخزين بيانات الاعتماد هذه على الجهاز وتتم مزامنتها مع السحابة الإلكترونية إذا فعّل المستخدم ميزة "الاحتفاظ بنسخة احتياطية" من Google وكان التشفير التام بين الأطراف متاحًا (يمكن للتطبيقات إيقاف المزامنة مع السحابة الإلكترونية).
  2. الحصول على بيانات اعتماد الاستعادة: عندما يُعدّ المستخدم جهازًا جديدًا، يمكن لتطبيقك طلب بيانات اعتماد الاستعادة من "مدير بيانات الاعتماد". يتيح لك ذلك تسجيل دخول المستخدم تلقائيًا بدون الحاجة إلى إدخال أي معلومات إضافية.
  3. محو بيانات اعتماد الاستعادة: عندما يسجّل المستخدم الخروج من تطبيقك، يجب حذف بيانات اعتماد الاستعادة المرتبطة.

يمكن دمج ميزة "استعادة بيانات الاعتماد" بسلاسة مع أنظمة الخلفية التي سبق أن نفّذت مفاتيح المرور. يرجع هذا التوافق إلى حقيقة أنّه تلتزم كلّ من مفاتيح المرور ومفاتيح الاستعادة (نوع بيانات الاعتماد المستخدَمة في ميزة "استعادة بيانات الاعتماد") بالمواصفات الفنية الأساسية نفسها. يضمن هذا التوافق أن تتمكّن عملية "استعادة بيانات الاعتماد" من استرجاع بيانات اعتماد المستخدم المخزّنة في الأنظمة المزوّدة بمفاتيح المرور واستعادتها بفعالية، ما يقدّم تجربة متّسقة وسهلة الاستخدام على مختلف منصّات المصادقة.

البطاقة السفلية لتطبيق "مدير بيانات الاعتماد"
الشكل 1. مخطّط بياني يوضّح استعادة بيانات تطبيق على جهاز جديد باستخدام بيانات اعتماد الاستعادة، بما في ذلك إنشاء بيانات الاعتماد، وبدء عملية الاستعادة، وتسجيل دخول المستخدم تلقائيًا

التنفيذ

تتوفّر واجهة برمجة التطبيقات Restore Credentials API من خلال مكتبة Credential Manager في Jetpack. للبدء، اتّبِع الخطوات التالية:

  1. أضِف تبعية "مدير بيانات الاعتماد" إلى مشروعك.

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. أنشئ عنصرًا من النوع CreateRestoreCredentialRequest.

  3. استدِع طريقة createCredential() في الكائن CredentialManager.

    val credentialManager = CredentialManager.create(context)
    
    // On a successful authentication create a Restore Key
    // Pass in the context and CreateRestoreCredentialRequest object
    val response = credentialManager.createCredential(context, createRestoreRequest)
    

    إنّ بيانات الاعتماد لاستعادة التي تم إنشاؤها هي نوع من بيانات اعتماد webauthn، ويُعرف باسم مفتاح الاستعادة.

  4. عندما يُعدّ المستخدم جهازًا جديدًا، استخدِم طريقة getCredential() في العنصر CredentialManager.

    // Fetch the Authentication JSON from server
    val authenticationJson = ...
    
    // Create the GetRestoreCredentialRequest object
    val options = GetRestoreCredentialOption(authenticationJson)
    val getRequest = GetCredentialRequest(Immutablelist.of(options))
    
    // The restore key can be fetched in two scenarios to
    // 1. On the first launch of app on the device, fetch the Restore Key
    // 2. In the onRestore callback (if the app implements the Backup Agent)
    val response = credentialManager.getCredential(context, getRequest)
    
  5. عندما يسجّل المستخدم الخروج من تطبيقك، استخدِم الطريقة clearCredentialState() على العنصر CredentialManager.

    // Create a ClearCredentialStateRequest object
    val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL)
    
    // On user log-out, clear the restore key
    val response = credentialManager.clearCredentialState(clearRequest)
    

إذا كنت تستخدم موظّف دعم احتياطيًا، نفِّذ الجزء getCredential ضمن ردّ الاتصال onRestore. يضمن ذلك استعادة بيانات اعتماد التطبيق فور استعادة بيانات التطبيق.