הפעלת אימות בכל האפליקציות באמצעות 'צרור מפתחות משותף' של Apple

כדי לשתף מצבי אימות עם כמה אפליקציות או תוספים בפלטפורמות של Apple, צריך לאחסן את את מצב האימות ב'צרור מפתחות משותף' באמצעות שירותי 'צרור מפתחות'. ולהגדיר את האפליקציות להשתמש ב'צרור המפתחות המשותף'.

כך המשתמשים יכולים:

  • נכנסים פעם אחת ונכנסים לחשבון בכל האפליקציות שמשויכות לאותה גישה קבוצה.
  • יציאה אחת תגרום ליציאה מכל האפליקציות ששייכות לאותה קבוצת גישה.

שיתוף מצב האימות בין אפליקציות

כדי לשתף את מצב האימות בין אפליקציות:

  1. מגדירים קבוצת גישה לאפליקציות.

    אפשר להשתמש בקבוצת גישה של מפתחות או בקבוצת אפליקציות. למידע נוסף, ראו שיתוף גישה לפריטי Keychain בין אוסף של אפליקציות אפשר לקבל פרטים נוספים.

    כדי להגדיר קבוצת גישה אל 'צרור מפתחות', מבצעים את הפעולות הבאות בכל אפליקציה:

    1. ב-Xcode, עוברים אל Project settings (הגדרות הפרויקט) > Capabilities (יכולות).
    2. הפעלת שיתוף מפתחות (Keychain).
    3. מוסיפים מזהה של קבוצת מפתחות (Keychain). צריך להשתמש באותו מזהה לכל הערכים אפליקציות שאתם רוצים לשתף.
  2. בכל אפליקציה, מגדירים את קבוצת הגישה לקבוצת הגישה של מפתחות הגישה או לקבוצת האפליקציות שיצרתם בשלב הקודם.

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

העברת משתמש שמחובר לחשבון לאוסף מפתחות משותף

כדי להעביר משתמש שכבר מחובר למצב משותף:

  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. עכשיו אפליקציות אחרות שיש להן גישה לאותה קבוצת גישה יכולות לגשת למשתמש.