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

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

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

  • سجِّل الدخول مرة واحدة، ثم سجِّل الدخول إلى جميع التطبيقات التي تملك إذن الوصول نفسه المجموعة.
  • تسجيل الخروج مرة واحدة من جميع التطبيقات التي تنتمي إلى مجموعة الوصول نفسها

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

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

  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. يمكن للتطبيقات الأخرى التي يمكنها الوصول إلى مجموعة الوصول نفسها الوصول إلى المستخدم الآن.