إتاحة المصادقة عبر التطبيقات من خلال سلسلة مفاتيح Apple المشتركة

لمشاركة حالات المصادقة بين تطبيقات أو إضافات متعددة على منصات Apple، يمكنك تخزين حالة المصادقة في سلسلة مفاتيح مشترَكة باستخدام Keychain Services وضبط تطبيقاتك لاستخدام سلسلة المفاتيح المشترَكة.

يتيح ذلك للمستخدمين إجراء ما يلي:

  • تسجيل الدخول مرة واحدة وتسجيل الدخول في جميع التطبيقات التي تنتمي إلى مجموعة الوصول نفسها
  • تسجيل الخروج مرة واحدة وتسجيل الخروج من جميع التطبيقات التي تنتمي إلى مجموعة الوصول نفسها

مشاركة حالة المصادقة بين التطبيقات

لمشاركة حالة المصادقة بين التطبيقات، اتّبِع الخطوات التالية:

  1. يمكنك إعداد مجموعة مخوّلة بالوصول لتطبيقاتك.

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

    لإعداد مجموعة مخوّلة بالوصول إلى سلسلة المفاتيح، اتّبِع الخطوات التالية لكل تطبيق:

    1. في Xcode، انتقِل إلى إعدادات المشروع > الإمكانات.
    2. فعِّل ميزة "مشاركة سلسلة المفاتيح".
    3. أضِف معرّف مجموعة سلسلة المفاتيح. استخدِم المعرّف نفسه لجميع التطبيقات التي تريد مشاركة الحالة فيها.
  2. في كل تطبيق، اضبط مجموعة مخوّلة بالوصول على مجموعة الوصول إلى سلسلة المفاتيح أو مجموعة التطبيقات التي أنشأتها في الخطوة السابقة.

    Swift

    do {
      try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1")
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Objective-C

    [FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1"
                                       error:nil];
    
  3. في تطبيق واحد على الأقل، سجِّل دخول مستخدم باستخدام أي طريقة لتسجيل الدخول.

    Swift

    Auth.auth().signInAnonymously { result, error in
      // User signed in
    }
    

    Objective-C

    [FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result,
                                               NSError *_Nullable error) {
      // User signed in
    }];
    

    يتوفّر المستخدم الحالي نفسه في جميع التطبيقات في مجموعة مخوّلة بالوصول.

    Swift

    var user = Auth.auth().currentUser
    

    Objective-C

    FIRUser *user = FIRAuth.auth.currentUser;
    

الرجوع إلى سلسلة مفاتيح غير مشترَكة

  1. اضبط مجموعة مخوّلة بالوصول على nil لإيقاف مشاركة حالة المصادقة.

    Swift

    do {
      try Auth.auth().useUserAccessGroup(nil)
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Objective-C

    [FIRAuth.auth useUserAccessGroup:nil error:nil];
    
  2. سجِّل دخول مستخدم باستخدام أي طريقة لتسجيل الدخول. لن تكون حالة المستخدم متاحة لأي تطبيقات أخرى.

    Swift

    Auth.auth().signInAnonymously { result, error in
      // User signed in
    }
    

    Objective-C

    [FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result,
                                       NSError *_Nullable error) {
      // User signed in
    }];
    

نقل مستخدم سجَّل الدخول إلى سلسلة مفاتيح مشترَكة

لنقل مستخدم سجَّل الدخول إلى حالة مشترَكة، اتّبِع الخطوات التالية:

  1. يمكنك إنشاء مرجع للمستخدم الحالي لاستخدامه في المستقبل.

    Swift

    var user = Auth.auth().currentUser
    

    Objective-C

    FIRUser *user = FIRAuth.auth.currentUser;
    
  2. (اختياري) يمكنك التحقّق من حالة المصادقة لمجموعة مخوّلة بالوصول التي تريد مشاركتها.

    Swift

    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
    }
    

    Objective-C

    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
    }
    
  3. استخدِم مجموعة مخوّلة بالوصول سبق لك ضبطها في إعدادات المشروع.

    Swift

    do {
      try Auth.auth().useUserAccessGroup(accessGroup)
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Objective-C

    [FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
    
  4. عدِّل بيانات المستخدم الحالي.

    Swift

    Auth.auth().updateCurrentUser(user!) { error in
      // Error handling
    }
    

    Objective-C

    [FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) {
      // Error handling
    }];
    
  5. يمكن للمستخدم الآن الوصول إليه من خلال التطبيقات الأخرى التي يمكنها الوصول إلى مجموعة مخوّلة بالوصول نفسها.