כדי לשתף את מצבי האימות בין כמה אפליקציות או תוספים בפלטפורמות של Apple, שומרים את מצב האימות באוסף מפתחות משותף באמצעות שירותי אוסף המפתחות ומגדירים את האפליקציות להשתמש באוסף המפתחות המשותף.
כך המשתמשים יכולים:
- נכנסים פעם אחת ונכנסים לחשבון בכל האפליקציות שמשויכות לאותה גישה קבוצה.
- יציאה אחת תגרום ליציאה מכל האפליקציות ששייכות לאותה קבוצת גישה.
שיתוף מצב האימות בין אפליקציות
כדי לשתף את מצב האימות בין אפליקציות:
מגדירים קבוצת גישה לאפליקציות.
אפשר להשתמש בקבוצת גישה ל-Keychain או בקבוצת אפליקציות. למידע נוסף, ראו שיתוף גישה לפריטי 'צרור מפתחות' בין אוסף של אפליקציות אפשר לקבל פרטים נוספים.
כדי להגדיר קבוצת גישה אל 'צרור מפתחות', מבצעים את הפעולות הבאות בכל אפליקציה:
- ב-Xcode, עוברים אל Project settings > (הגדרות פרויקט >) יכולות.
- הפעלת שיתוף מפתחות (Keychain).
- מוסיפים מזהה קבוצה של מפתחות. צריך להשתמש באותו מזהה לכל הערכים אפליקציות שאתם רוצים לשתף.
בכל אפליקציה, מגדירים את קבוצת הגישה כקבוצת הגישה מסוג 'צרור מפתחות' או כקבוצת האפליקציות שיצרתם בשלב הקודם.
do { try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1") } catch let error as NSError { print("Error changing user access group: %@", error) }
[FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1" error:nil];
נכנסים משתמש לאפליקציה אחת לפחות באמצעות כל אחת משיטות הכניסה.
Auth.auth().signInAnonymously { result, error in // User signed in }
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
אותו משתמש נוכחי זמין בכל האפליקציות בקבוצת הגישה.
var user = Auth.auth().currentUser
FIRUser *user = FIRAuth.auth.currentUser;
איך חוזרים לאוסף מפתחות שלא משותף
כדי להפסיק את שיתוף מצב האימות צריך להגדיר את קבוצת הגישה לערך
nil
.do { try Auth.auth().useUserAccessGroup(nil) } catch let error as NSError { print("Error changing user access group: %@", error) }
[FIRAuth.auth useUserAccessGroup:nil error:nil];
נכנסים למשתמש באמצעות שיטת כניסה כלשהי. מצב המשתמש לא יהיה זמין לכל אפליקציה אחרת.
Auth.auth().signInAnonymously { result, error in // User signed in }
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
העברת משתמש מחובר ל-Keychain משותף
כדי להעביר משתמש שכבר מחובר למצב משותף:
אפשר להפנות למשתמש הנוכחי לשימוש עתידי.
var user = Auth.auth().currentUser
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 }
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) }
[FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
מעדכנים את המשתמש הנוכחי.
Auth.auth().updateCurrentUser(user!) { error in // Error handling }
[FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) { // Error handling }];
עכשיו אפליקציות אחרות שיש להן גישה לאותה קבוצת גישה יכולות לגשת למשתמש.