فعال کردن احراز هویت بین برنامه‌ای با Apple Keychain مشترک

برای اشتراک‌گذاری وضعیت‌های احراز هویت در چندین برنامه یا برنامه‌های افزودنی در پلتفرم‌های اپل، وضعیت احراز هویت را با استفاده از Keychain Services در یک زنجیره کلید مشترک ذخیره کنید و برنامه‌های خود را برای استفاده از زنجیره کلید مشترک پیکربندی کنید.

این به کاربران اجازه می دهد:

  • یک بار وارد شوید و در همه برنامه‌هایی که به یک گروه دسترسی تعلق دارند وارد شوید.
  • یک بار از سیستم خارج شوید و در همه برنامه‌هایی که به یک گروه دسترسی تعلق دارند از سیستم خارج شوید.

به اشتراک گذاری وضعیت احراز هویت بین برنامه ها

برای اشتراک‌گذاری وضعیت احراز هویت بین برنامه‌ها:

  1. یک گروه دسترسی برای برنامه های خود راه اندازی کنید.

    می توانید از یک گروه دسترسی به زنجیره کلید یا یک گروه برنامه استفاده کنید. برای جزئیات بیشتر به اشتراک گذاری دسترسی به آیتم های زنجیره کلید در میان مجموعه ای از برنامه ها مراجعه کنید.

    برای راه اندازی یک گروه دسترسی به زنجیره کلید، برای هر برنامه موارد زیر را انجام دهید:

    1. در Xcode، به تنظیمات پروژه > قابلیت‌ها بروید.
    2. اشتراک گذاری زنجیره کلید را فعال کنید.
    3. یک شناسه گروه زنجیره کلید اضافه کنید. از یک شناسه برای همه برنامه‌هایی که می‌خواهید وضعیت را به اشتراک بگذارید، استفاده کنید.
  2. در هر برنامه، گروه دسترسی را روی گروه دسترسی به زنجیره کلید یا گروه برنامه ای که در مرحله قبل ایجاد کردید، تنظیم کنید.

    سریع

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

    هدف-C

    [FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1"
                                       error:nil];
    
  3. حداقل در یک برنامه، کاربر را با هر روش ورود به سیستم وارد کنید.

    سریع

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

    هدف-C

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

    همان کاربر فعلی در همه برنامه‌های گروه دسترسی موجود است.

    سریع

    var user = Auth.auth().currentUser
    

    هدف-C

    FIRUser *user = FIRAuth.auth.currentUser;
    

به یک دسته کلید مشترک بازگردید

  1. گروه دسترسی را روی nil تنظیم کنید تا اشتراک گذاری وضعیت احراز هویت متوقف شود.

    سریع

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

    هدف-C

    [FIRAuth.auth useUserAccessGroup:nil error:nil];
    
  2. کاربر را با هر روش ورود به سیستم وارد کنید. وضعیت کاربر برای هیچ برنامه دیگری در دسترس نخواهد بود.

    سریع

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

    هدف-C

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

یک کاربر وارد شده به سیستم را به یک زنجیره کلید مشترک منتقل کنید

برای انتقال کاربری که قبلاً به سیستم اشتراک‌گذاری شده وارد شده است:

  1. برای استفاده در آینده به کاربر فعلی ارجاع دهید.

    سریع

    var user = Auth.auth().currentUser
    

    هدف-C

    FIRUser *user = FIRAuth.auth.currentUser;
    
  2. (اختیاری) وضعیت اعتبار گروه دسترسی را که می خواهید به اشتراک بگذارید بررسی کنید.

    سریع

    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
    }
    

    هدف-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. از یک گروه دسترسی که قبلاً در تنظیمات پروژه تنظیم کرده اید استفاده کنید.

    سریع

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

    هدف-C

    [FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
    
  4. کاربر فعلی را به روز کنید.

    سریع

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

    هدف-C

    [FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) {
      // Error handling
    }];
    
  5. اکنون کاربر می تواند توسط برنامه های دیگری که به همان گروه دسترسی دسترسی دارند، دسترسی داشته باشد.