قم بتسجيل الدخول باستخدام Apple - قم بتنفيذه في تطبيقك!
نشرت: 2020-01-14تسجيل الدخول مع Apple - ميزة جديدة قدمتها Apple في WWDC العام الماضي ، متاحة الآن من iOS 13. توفر هذه الميزة تسجيل حساب بسيط وآمن وتسجيل الدخول في التطبيق أو موقع الويب. بدلاً من ملء استمارات التسجيل أو تسجيل الدخول عبر وسائل التواصل الاجتماعي ، يمكنك الآن إنشاء حساب وتسجيل الدخول باستخدام معرف Apple الخاص بك والتحقق من خلال Face ID أو Touch ID أو رمز المرور.
وصف موجز لـ Sign In With Apple:
- إعداد سريع وسهل للحساب وتسجيل الدخول
- عناوين بريد إلكتروني تم التحقق منها
- أمان مدمج
- مكافحة الغش
- عبر منصة ️
- iOS 13+
في هذه المقالة ، سأركز على التنفيذ الأساسي لـ Sign In With Apple على أجهزة iOS دون التكامل مع إصدار الويب أو التكامل مع الواجهة الخلفية.
كيف تعمل ميزة "تسجيل الدخول باستخدام Apple"؟

بعد النقر على "تسجيل الدخول باستخدام Apple" أو "متابعة مع Apple" (يعتمد ذلك على الزر الذي تم اختياره ليتم تنفيذه في التطبيق) ، تظهر نافذة معلومات مع إمكانيات هذا الحل (لقطة الشاشة الثانية). ثم بعد النقر على "متابعة" ، نحصل على معلومات حول البيانات التي ستتم مشاركتها مع مالك التطبيق.
هنا لدينا خياران لتسجيل حساب في التطبيق باستخدام Sign In With Apple:
- من خلال مشاركة عنوان البريد الإلكتروني الخاص بنا - ستتم مشاركة عنوان بريدك الإلكتروني الحقيقي مع التطبيق أو موقع الويب.
- مع إخفاء عنوان البريد الإلكتروني الخاص بنا - لن يتم مشاركة بريدك الإلكتروني الحقيقي مع التطبيق أو موقع الويب. ستنشئ Apple بريدًا إلكترونيًا فريدًا لك باستخدام المجال @ privaterelay.appleid.com. لا تقلق ، ستتم إعادة توجيه جميع رسائل البريد الإلكتروني الواردة من مالك التطبيق إلى صندوق الوارد الخاص بك على أي حال ، لأنه سيتم إعادة توجيه رسائل البريد الإلكتروني إلى عنوان بريدنا الإلكتروني الحقيقي. لن يعرف مالك التطبيق سوى عنوان البريد الإلكتروني الذي تم إنشاؤه باستخدام مجال Apple
بعد تحديد أحد الخيارات والضغط على "متابعة" ، نتحقق من معرف Apple الخاص بنا كما في حالة إلغاء قفل الهاتف ، أي عن طريق Face ID أو Touch ID أو عن طريق إدخال رمز المرور. في هذه المرحلة ، يجب إنشاء حساب في التطبيق / موقع الويب بمعرّف فريد للمستخدم.

عندما استخدمت في التطبيق "تسجيل الدخول باستخدام Apple" من قبل ، يمكنك معاينة تفاصيل طريقة تسجيل الدخول هذه والتوقف عن استخدام هذه الميزة. للقيام بذلك ، انتقل إلى الإعدادات> معرف Apple> كلمة المرور والأمان> التطبيقات التي تستخدم معرف Apple الخاص بك> اختر التطبيق.
كيف يتم تنفيذ "تسجيل الدخول مع Apple"؟
بعد قراءة الجزء النظري من "Sign In With Apple" ، يمكننا المضي قدمًا في التنفيذ

بادئ ذي بدء ، تحتاج إلى فتح "التوقيع والقدرات" في مشروعك ، ثم الضغط على + وإضافة إمكانية "تسجيل الدخول باستخدام Apple".

قسمت Apple في WWDC Keynote عملية تنفيذ هذه الميزة إلى أربع مراحل. يتم وصف جميع المراحل أدناه.
1. زر
في البداية ، يتعين علينا إضافة زر إلى شاشتنا. يجب أن يكون هذا الزر ASAuthorizationAppleIDButton
من إطار عمل AuthenticationService
. وهي متوفرة بلونين (أبيض وأسود) بعناوين مختلفة. إلى الزر ، يجب أن نضيف إجراءً يتم استدعاؤه بعد النقر عليه. أصف إجراء التفويض في النقطة الثانية.
استيراد خدمات التوثيق اسمحوا الزر = ASAuthorizationAppleIDButton (اكتب: .signIn ، النمط:. أبيض) button.addTarget (self ، action: #selector (appleIdButtonClicked) ، لـ: .touchUpInside) stackView.addArrangedSubview (زر)
2. إذن ️
هنا نقوم بإنشاء requestedScopes
ترخيص ، حيث نقوم بتقديم المعلومات الضرورية فقط لإنشاء حساب في تطبيقنا أو موقعنا على الويب ، حسب الطلب. في حالتي ، هذا هو الاسم الكامل وعنوان البريد الإلكتروني. ثم قم بتعيين المفوض وقم بتقديم الطلب.
objc func appleIdButtonClicked () { اسمح للطلب = ASAuthorizationAppleIDProvider (). createRequest () request.requestedScopes = [.fullName، .email] السماح للمراقب = ASAuthorizationController (authorizationRequests: [request]) Controller.delegate = self Controller.presentationContextProvider = self Controller.performRequests () }
3. التحقق
بعد إجراء فحص سريع بواسطة Face ID أو Touch ID أو رمز المرور ، سيتم إرجاع نتيجة التفويض. عند نجاح التفويض ، سيعيد التابع didCompleteWithAuthorization
كائنًا من نوع AppleIdCredential
. ثم تحتاج إلى التحقق مما إذا كانت بيانات اعتماد من نوع ASAuthorizationAppleIdCredential
- إذا كانت الإجابة بنعم ، فسنجد في هذا الكائن جميع البيانات اللازمة لإعداد حساب في نظامنا ، مثل معرف المستخدم الفريد والاسم الكامل وعنوان البريد الإلكتروني (والذي طلب المستخدم في وقت سابق). في هذه المرحلة ، يمكننا المضي قدمًا في إنشاء حساب في نظامنا من خلال توفير المعلومات الضرورية فقط. إذا حدث خطأ ، فسيتم إرجاعه بطريقة didCompleteWithError
، حيث يمكننا معالجة هذا الخطأ.

func authorizationController (controller: ASAuthorizationController، didCompleteWithAuthorization إذن: ASAuthorization) { إذا تركت appleIDCredential = authorization.credential كـ؟ ASAuthorizationAppleIDCredential { // إنشاء حساب في نظامك. } else if let passwordCredential = authorization.credential as؟ ASPasswordCredential { // تسجيل الدخول باستخدام بيانات اعتماد iCloud Keychain الحالية. } } func authorizationController (وحدة التحكم: ASAuthorizationController ، خطأ didCompleteWithError: خطأ) { طباعة (خطأ) }
4. معالجة التغييرات
يجب أن تكون مستعدًا لحقيقة أن المستخدم ، على سبيل المثال ، قد توقف عن استخدام تسجيل الدخول إلى التطبيق باستخدام معرف Apple. يجب التعامل مع هذا بشكل صحيح بعد أن يقوم المستخدم بإعادة تشغيل التطبيق.
باستخدام معرف المستخدم الذي تلقيناه أثناء تسجيل الحساب ، يمكننا الحصول على الحالة الحالية لبيانات اعتماد معرف Apple من خلال استدعاء طريقة getCredentialState
بسرعة كبيرة. يمكن أن تعيد هذه الطريقة ثلاث حالات:
-
authorized
- مستخدم مخول يمكنه الاستمرار في استخدام التطبيق. -
revoked
- قم بتسجيل خروج المستخدم ويمكنك اختياريًا توجيهه إلى شاشة تسجيل الدخول لتسجيل الدخول مرة أخرى. -
notFound
- يعني أن المستخدم لم يستخدم "تسجيل الدخول باستخدام Apple" مسبقًا. في هذه المرحلة ، أظهر أيضًا للمستخدم شاشة تسجيل الدخول.
يجب أن يكون استدعاء الأسلوب getCredentialState
في AppDelegate
في طريقة didFinishLaunchingWithOptions
.
بالإضافة إلى ذلك ، تقدم Apple إشعارًا ، تُعلم فيه عندما يتم إبطال بيانات الاعتماد ومن ثم يتعين علينا التعامل معها بالطريقة المذكورة أعلاه لهذه الحالة.
appleIDProvider.getCredentialState (forUserID: userId) {credentialState ، خطأ في تبديل بيانات الاعتماد الدولة { الحالة. مصرح بها: // بيانات اعتماد معرف Apple صالحة. تم إبطال القضية: // تم إبطال بيانات اعتماد معرف Apple ، قم بتسجيل الخروج. حالة .not وجدت: // لم يتم العثور على بيانات اعتماد ، لذا اعرض واجهة مستخدم تسجيل الدخول. إفتراضي: فترة راحة } } // التسجيل لإشعار الإلغاء NotificationCenter.default.addObserver (forName: NSNotification.Name.ASAuthorizationAppleIDProviderCredentialRevoked ، الكائن: لا شيء ، قائمة الانتظار: لا شيء) {_ في // سجّل خروج المستخدم ، وأرشده اختياريًا لتسجيل الدخول مرة أخرى }
بعد تنفيذ جميع المراحل الأربع في نموذج الطلب الخاص بي ، يعمل كل شيء ويبدو كما يلي:

هل يجب علي إضافة "تسجيل الدخول باستخدام Apple" إلى تطبيقي؟
إذا كان تطبيقك يستخدم طريقة تسجيل دخول لجهة خارجية مثل Facebook أو Google أو LinkedIn ، فيجب عليك أيضًا إضافة تسجيل الدخول باستخدام Apple وفقًا للإرشادات الجديدة. إذا لم تقم بإضافته ، فقد يتم رفض طلبك وقد لا تتم مراجعته بواسطة Apple. يوجد أدناه رابط للأخبار واقتباس من الإرشادات.
إرشادات جديدة لتسجيل الدخول باستخدام Apple - 12 سبتمبر 2019 ️
بدءًا من اليوم ، يجب أن تتبع التطبيقات الجديدة التي يتم إرسالها إلى App Store هذه الإرشادات. يجب أن تتبعها التطبيقات الحالية وتحديثات التطبيقات بحلول أبريل 2020.
فيما يلي التطبيقات التي تقدم تسجيل الدخول باستخدام ميزة Apple الجديدة ، بالطبع ، هناك المزيد والمزيد منها كل يوم

يمكنك التحقق من المشروع بأكمله على جيثب الخاص بي هنا.
مصادر:
- https://developer.apple.com/videos/play/wwdc2019/706/
- https://developer.apple.com/videos/play/wwdc2019/516
- https://developer.apple.com/sign-in-with-apple/get-started/
- https://developer.apple.com/news/؟id=09122019b
- https://developer.apple.com/app-store/review/guidelines/#sign-in-with-apple