لمشاركة حالات المصادقة في عدة تطبيقات أو إضافات على أنظمة Apple الأساسية، خزّن حالة المصادقة في سلسلة مفاتيح مشتركة باستخدام خدمات سلسلة المفاتيح وتهيئ تطبيقاتك لاستخدام سلسلة المفاتيح المشتركة.
ويسمح ذلك للمستخدمين بإجراء ما يلي:
- سجِّل الدخول مرة واحدة، ثم سجِّل الدخول إلى جميع التطبيقات التي تملك إذن الوصول نفسه المجموعة.
- تسجيل الخروج مرة واحدة وتسجيل الخروج من جميع التطبيقات التي تنتمي إلى إعدادات الوصول نفسها المجموعة.
مشاركة حالة المصادقة بين التطبيقات
لمشاركة حالة المصادقة بين التطبيقات، اتّبِع الخطوات التالية:
يمكنك إعداد مجموعة حاصلة على إذن وصول لتطبيقاتك.
يمكنك استخدام مجموعة حاصلة على إذن وصول سلسلة المفاتيح أو مجموعة تطبيقات. الاطّلاع على مشاركة الوصول إلى عناصر سلسلة المفاتيح ضمن مجموعة من التطبيقات لمزيد من التفاصيل.
لإعداد مجموعة وصول إلى سلسلة المفاتيح، عليك اتّباع الخطوات التالية لكل تطبيق:
- في Xcode، انتقِل إلى Project settings (إعدادات المشروع) > الإمكانات.
- تفعيل مشاركة سلسلة المفاتيح
- أضِف معرِّف مجموعة مفاتيح. استخدم نفس المعرِّف لجميع التطبيقات التي تريد مشاركتها.
في كل تطبيق، عليك ضبط مجموعة الوصول على مجموعة الوصول إلى سلسلة المفاتيح أو مجموعة التطبيقات قمت بإنشائه في الخطوة السابقة.
do { try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1") } catch let error as NSError { print("Error changing user access group: %@", error) }
[FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1" error:nil];
في تطبيق واحد على الأقل، سجِّل دخول المستخدم باستخدام أي طريقة لتسجيل الدخول.
Auth.auth().signInAnonymously { result, error in // User signed in }
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
يتوفّر المستخدم الحالي نفسه في جميع التطبيقات ضمن مجموعة حاصلة على إذن الوصول.
var user = Auth.auth().currentUser
FIRUser *user = FIRAuth.auth.currentUser;
التبديل مرة أخرى إلى سلسلة مفاتيح غير مشتركة
اضبط مجموعة الوصول على
nil
لإيقاف مشاركة حالة المصادقة.do { try Auth.auth().useUserAccessGroup(nil) } catch let error as NSError { print("Error changing user access group: %@", error) }
[FIRAuth.auth useUserAccessGroup:nil error:nil];
سجِّل دخول مستخدم باستخدام أي طريقة تسجيل دخول. لن تكون حالة المستخدم متاحة. إلى أي تطبيقات أخرى.
Auth.auth().signInAnonymously { result, error in // User signed in }
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
نقل بيانات مستخدم مسجِّل الدخول إلى سلسلة مفاتيح مشتركة
لنقل بيانات مستخدم سبق له تسجيل الدخول إلى حالة مشتركة:
إشارة إلى المستخدم الحالي لاستخدامه في المستقبل
var user = Auth.auth().currentUser
FIRUser *user = FIRAuth.auth.currentUser;
(اختياري) تحقَّق من حالة المصادقة لمجموعة الوصول التي تريد مشاركتها.
let accessGroup = "TEAMID.com.example.group1" var tempUser: User? do { try tempUser = Auth.auth().getStoredUser(forAccessGroup: accessGroup) } catch let error as NSError { print("Error getting stored user: %@", error) } if tempUser != nil { // A user exists in the access group } else { // No user exists in the access group }
NSString *accessGroup = @"TEAMID.com.example.group1"; FIRUser *tempUser = [FIRAuth getStoredUserForAccessGroup:accessGroup error:nil]; if (tempUser) { // A user exists in the access group } else { // No user exists in the access group }
يمكنك استخدام مجموعة حاصلة على إذن وصول سبق لك ضبطها في إعدادات المشروع.
do { try Auth.auth().useUserAccessGroup(accessGroup) } catch let error as NSError { print("Error changing user access group: %@", error) }
[FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
تعديل المستخدم الحالي
Auth.auth().updateCurrentUser(user!) { error in // Error handling }
[FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) { // Error handling }];
يمكن الآن الوصول إلى المستخدم من خلال التطبيقات الأخرى التي يمكنها الوصول إلى مجموعة حاصلة على إذن الوصول نفسها.