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

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

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

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

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

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

  1. يمكنك إعداد مجموعة حاصلة على إذن وصول لتطبيقاتك.

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

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

    1. في Xcode، انتقِل إلى Project settings (إعدادات المشروع) > الإمكانات.
    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. يمكن الآن الوصول إلى المستخدم من خلال التطبيقات الأخرى التي يمكنها الوصول إلى مجموعة حاصلة على إذن الوصول نفسها.