برای اشتراکگذاری وضعیتهای احراز هویت در چندین برنامه یا برنامههای افزودنی در پلتفرمهای اپل، وضعیت احراز هویت را با استفاده از Keychain Services در یک زنجیره کلید مشترک ذخیره کنید و برنامههای خود را برای استفاده از زنجیره کلید مشترک پیکربندی کنید.
این به کاربران اجازه می دهد:
- یک بار وارد شوید و در همه برنامههایی که به یک گروه دسترسی تعلق دارند وارد شوید.
- یک بار از سیستم خارج شوید و در همه برنامههایی که به یک گروه دسترسی تعلق دارند از سیستم خارج شوید.
به اشتراک گذاری وضعیت احراز هویت بین برنامه ها
برای اشتراکگذاری وضعیت احراز هویت بین برنامهها:
یک گروه دسترسی برای برنامه های خود راه اندازی کنید.
می توانید از یک گروه دسترسی به زنجیره کلید یا یک گروه برنامه استفاده کنید. برای جزئیات بیشتر به اشتراک گذاری دسترسی به آیتم های زنجیره کلید در میان مجموعه ای از برنامه ها مراجعه کنید.
برای راه اندازی یک گروه دسترسی به زنجیره کلید، برای هر برنامه موارد زیر را انجام دهید:
- در Xcode، به تنظیمات پروژه > قابلیتها بروید.
- اشتراک گذاری زنجیره کلید را فعال کنید.
- یک شناسه گروه زنجیره کلید اضافه کنید. از یک شناسه برای همه برنامههایی که میخواهید وضعیت را به اشتراک بگذارید، استفاده کنید.
در هر برنامه، گروه دسترسی را روی گروه دسترسی به زنجیره کلید یا گروه برنامه ای که در مرحله قبل ایجاد کردید، تنظیم کنید.
سویفت
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];
حداقل در یک برنامه، کاربر را با هر روش ورود به سیستم وارد کنید.
سویفت
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;
به یک دسته کلید مشترک بازگردید
گروه دسترسی را روی
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];
کاربر را با هر روش ورود به سیستم وارد کنید. وضعیت کاربر برای هیچ برنامه دیگری در دسترس نخواهد بود.
سویفت
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;
(اختیاری) وضعیت اعتبار گروه دسترسی را که می خواهید به اشتراک بگذارید بررسی کنید.
سویفت
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 }
از یک گروه دسترسی که قبلاً در تنظیمات پروژه تنظیم کرده اید استفاده کنید.
سویفت
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];
کاربر فعلی را به روز کنید.
سویفت
Auth.auth().updateCurrentUser(user!) { error in // Error handling }
هدف-C
[FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) { // Error handling }];
اکنون کاربر می تواند توسط برنامه های دیگری که به همان گروه دسترسی دسترسی دارند، دسترسی داشته باشد.