لدمج Smart Lock لكلمات المرور في تطبيق Android، عليك إضافة استدعاءات إلى Credentials API إلى بدء تشغيل التطبيق وتسجيل الدخول. يوضّح المخطّط التالي مسار تطبيق نموذجي لأجهزة Android يستخدم Smart Lock لكلمات المرور.
هناك العديد من الطرق لدمج Smart Lock لكلمات المرور بنجاح، وتعتمد تفاصيل عملية الدمج على بنية التطبيق وتجربة المستخدم، إلا أنّ الخطوات التالية ننصح بها لمعظم التطبيقات. وتحصل التطبيقات التي تستخدم هذه العملية على مزايا تجربة المستخدم هذه:
- يتم تسجيل دخول مستخدمي الخدمة الحاليين الذين لديهم بيانات اعتماد واحدة مسجّلة على الفور، وسيتم نقلهم مباشرةً إلى الملف الشخصي الذي تم تسجيل الدخول إليه عند فتح التطبيق.
- يحتاج المستخدمون الذين لديهم بيانات اعتماد متعددة محفوظة أو الذين أوقفوا تسجيل الدخول التلقائي إلى الرد على مربّع حوار واحد فقط قبل الانتقال إلى عرض التطبيق أثناء تسجيل الدخول.
- وبالنسبة إلى المستخدمين الذين ليس لديهم بيانات اعتماد محفوظة أو لم يشتركوا بعد، يمكنهم اختيار اسمهم وبريدهم الإلكتروني بنقرة واحدة وسيتم إرسالهم بذكاء إلى صفحة تسجيل الدخول أو الاشتراك، حيث يتم ملؤها بهذه المعلومات مسبقًا.
- عندما يسجّل المستخدمون خروجهم، يضمن التطبيق عدم إعادة تسجيل الدخول تلقائيًا.
استرداد بيانات الاعتماد
- عند بدء تشغيل التطبيق، يمكنك الاتصال بـ
CredentialsClient.request()
إذا لم يسبق أن سجَّل المستخدم الدخول. - في حال نجاح
Task
، يمكنك الحصول على بيانات اعتماد المستخدم باستخدامgetResult().getCredential()
واستخدامها لتسجيل الدخول. - إذا تعذّر
Task
وتمثّل الاستثناء مرة واحدة فيResolvableApiException
وعرضgetStatusCode()
RESOLUTION_REQUIRED
، يجب إدخال القيمة من جانب المستخدم لاختيار بيانات الاعتماد. اطلبstartResolutionForResult()
لمطالبة المستخدم باختيار حساب محفوظ، ثم اتّصِل بـgetParcelableExtra(Credential.EXTRA_KEY)
للحصول على بيانات اعتماد المستخدم واستخدامها لتسجيل الدخول.
حفظ بيانات الاعتماد
إذا تعذّر تنفيذ
Task
باستخدامApiException
و تعرضgetStatusCode()
SIGN_IN_REQUIRED
، لن يتمكّن المستخدم من حفظ بيانات الاعتماد الخاصة به ويجب تسجيل الدخول أو الاشتراك يدويًا باستخدام الخطوات الحالية لتسجيل الدخول أو الاشتراك. بعد إكمال المستخدم لتسجيل الدخول بنجاح، يمكنك توفير فرصة للمستخدم لحفظ بيانات اعتماده للاسترداد في المستقبل (الخطوة 5).يمكنك مساعدة المستخدم في تسجيل الدخول أو الاشتراك بشكل أسرع وأكثر سهولة من خلال استرداد تعديلات تسجيل الدخول، مثل عنوان البريد الإلكتروني للمستخدم. ويمكن للمستخدم اختيار التلميح وتخطّي كتابة بيانات اعتماده. إذا كان تطبيقك يتطلب تسجيل الدخول من المستخدمين، يمكنك اختيار استرداد التلميحات فورًا بعد تعذّر طلب بيانات الاعتماد الأولية (وإلا، يمكنك الانتظار حتى يبدأ المستخدم عملية تسجيل الدخول أو الاشتراك).
- يمكنك الاتصال بالرقم
CredentialsClient.getHintPickerIntent()
وبدء intent لحث المستخدم على اختيار حساب، ثم الاتصال بالرقمgetParcelableExtra(Credential.EXTRA_KEY)
للحصول على تلميح تسجيل الدخول. - إذا كان رقم تعريف المستخدم في التلميح يتطابق مع مستخدم حالي، عليك ملء نموذج تسجيل الدخول به مسبقًا والسماح للمستخدم بإدخال كلمة المرور لتسجيل الدخول.
- إذا لم يتطابق رقم تعريف المستخدم للتلميح مع مستخدم حالي، عليك ملء نموذج الاشتراك مسبقًا برقم تعريف المستخدم واسمه والسماح للمستخدم بإنشاء حساب جديد.
- يمكنك الاتصال بالرقم
-
بعد أن يسجِّل المستخدم الدخول بنجاح أو ينشئ حسابًا، يمكنك حفظ رقم تعريف المستخدم وكلمة المرور باستخدام
CredentialsClient.save()
.إذا سجَّل المستخدم الدخول من خلال موفِّر هوية موحَّد مثل "تسجيل الدخول بحساب Google"، أنشئ الكائن
Credential
باستخدام عنوان البريد الإلكتروني للمستخدم على أنه رقم التعريف وحدِّد موفِّر الهوية من خلالsetAccountType
.
تسجيل الخروج
- عندما يسجّل المستخدم خروجه، يمكنك الاتصال بالرقم
CredentialsClient.disableAutoSignIn()
لمنع المستخدم من تسجيل الدخول مجددًا على الفور. إنّ إيقاف تسجيل الدخول التلقائي يمكّن المستخدمين أيضًا من التبديل بين الحسابات بسهولة، مثلاً، بين حسابات العمل والحسابات الشخصية، أو بين الحسابات على الأجهزة المشتركة، بدون الحاجة إلى إعادة إدخال معلومات تسجيل الدخول.
هل أنت مستعد لدمج Smart Lock لكلمات المرور في تطبيقك؟ بدء الاستخدام.