כדי לשתף מצבי אימות בין כמה אפליקציות או תוספים בפלטפורמות של אפל, צריך לאחסן את מצב האימות במחזיק מפתחות משותף באמצעות Keychain Services ולהגדיר את האפליקציות לשימוש במחזיק המפתחות המשותף.
המשתמשים יכולים:
- מתחברים פעם אחת ונשארים מחוברים בכל האפליקציות ששייכות לאותה קבוצת גישה.
- יוצאים מהחשבון פעם אחת ויוצאים מכל האפליקציות ששייכות לאותה קבוצת גישה.
שיתוף סטטוס האימות בין אפליקציות
כדי לשתף את סטטוס האימות בין אפליקציות:
מגדירים קבוצת גישה לאפליקציות.
אפשר להשתמש בקבוצת גישה למחזיק מפתחות או בקבוצת אפליקציות. פרטים נוספים מופיעים במאמר בנושא שיתוף גישה לפריטים ב-Keychain בין אוסף של אפליקציות.
כדי להגדיר קבוצת גישה לשרשרת מפתחות, מבצעים את הפעולות הבאות לכל אפליקציה:
- ב-Xcode, עוברים אל Project settings > Capabilities (הגדרות הפרויקט > יכולות).
- מפעילים את שיתוף מחזיק המפתחות.
- מוסיפים מזהה של קבוצת מחזיקי מפתחות. צריך להשתמש באותו מזהה לכל האפליקציות שרוצים לשתף ביניהן את הסטטוס.
בכל אפליקציה, מגדירים את קבוצת הגישה לקבוצת הגישה למחזיק המפתחות או לקבוצת האפליקציות שיצרתם בשלב הקודם.
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];באפליקציה אחת לפחות, נכנסים כמשתמש באמצעות שיטת כניסה כלשהי.
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().currentUserObjective-C
FIRUser *user = FIRAuth.auth.currentUser;
חזרה לשרשרת מפתחות לא משותפת
מגדירים את קבוצת הגישה ל
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];מבצעים כניסה של משתמש באמצעות כל שיטת כניסה. סטטוס המשתמש לא יהיה זמין לאפליקציות אחרות.
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().currentUserObjective-C
FIRUser *user = FIRAuth.auth.currentUser;(אופציונלי) בודקים את מצב האימות של קבוצת הגישה שרוצים לשתף.
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 }שימוש בקבוצת גישה שהגדרתם בעבר בהגדרות הפרויקט.
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];עדכון המשתמש הנוכחי.
Swift
Auth.auth().updateCurrentUser(user!) { error in // Error handling }Objective-C
[FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) { // Error handling }];עכשיו אפליקציות אחרות שיש להן גישה לאותה קבוצת גישה יכולות לגשת למשתמש.