فعال کردن اصالت‌سنجی بین‌برنامه‌ای با «کلیددان Apple» هم‌رسانی‌شده

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

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

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

هم‌رسانی وضعیت احراز هویت بین برنامه‌ها

برای هم‌رسانی وضعیت احراز هویت بین برنامه‌ها:

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

    می‌توانید از گروه دسترسی keychain یا گروه برنامه استفاده کنید. برای جزئیات، به هم‌رسانی دسترسی به موارد «کلیدهای امن» بین مجموعه‌ای از برنامه‌ها مراجعه کنید.

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

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

    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
    }];
    

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

برای انتقال کاربری که قبلاً به سیستم وضعیت مشترک وارد شده است:

  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. اکنون کاربر می‌تواند توسط برنامه‌های دیگری که به همان گروه دسترسی دسترسی دارند، قابل دسترسی باشد.