הפעלת אימות חוצה אפליקציות עם מחזיק מפתחות משותף של Apple

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

זה מאפשר למשתמשים:

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

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

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

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

    אתה יכול להשתמש בקבוצת גישה למחזיק מפתחות או בקבוצת אפליקציות. ראה שיתוף גישה לפריטי מחזיק מפתחות בין אוסף אפליקציות לפרטים.

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

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

    מָהִיר

    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. באפליקציה אחת לפחות, היכנס למשתמש בכל שיטת כניסה.

    מָהִיר

    Auth.auth().signInAnonymously { result, error in
      // User signed in
    }
    

    Objective-C

    [FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result,
                                               NSError *_Nullable error) {
      // User signed in
    }];
    

    אותו משתמש נוכחי זמין בכל האפליקציות בקבוצת הגישה.

    מָהִיר

    var user = Auth.auth().currentUser
    

    Objective-C

    FIRUser *user = FIRAuth.auth.currentUser;
    

עבור חזרה למחזיק מפתחות לא משותף

  1. הגדר את קבוצת הגישה nil כדי להפסיק לשתף את מצב האימות.

    מָהִיר

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

    מָהִיר

    Auth.auth().signInAnonymously { result, error in
      // User signed in
    }
    

    Objective-C

    [FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result,
                                       NSError *_Nullable error) {
      // User signed in
    }];
    

העבר משתמש מחובר למחזיק מפתחות משותף

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

  1. צור הפניה למשתמש הנוכחי לשימוש עתידי.

    מָהִיר

    var user = Auth.auth().currentUser
    

    Objective-C

    FIRUser *user = FIRAuth.auth.currentUser;
    
  2. (אופציונלי) בדוק את מצב האימות של קבוצת הגישה שברצונך לשתף.

    מָהִיר

    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. השתמש בקבוצת גישה שהגדרת בעבר בהגדרות הפרויקט.

    מָהִיר

    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. עדכן את המשתמש הנוכחי.

    מָהִיר

    Auth.auth().updateCurrentUser(user!) { error in
      // Error handling
    }
    

    Objective-C

    [FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) {
      // Error handling
    }];
    
  5. כעת ניתן לגשת למשתמש על ידי אפליקציות אחרות שיש להן גישה לאותה קבוצת גישה.