Aktivieren der App-übergreifenden Authentifizierung mit dem gemeinsamen Apple-Schlüsselbund

Um Authentifizierungsstatus über mehrere Apps oder Erweiterungen auf Apple-Plattformen hinweg zu teilen, speichern Sie den Authentifizierungsstatus mithilfe der Schlüsselbunddienste in einem freigegebenen Schlüsselbund und konfigurieren Sie Ihre Apps für die Verwendung des freigegebenen Schlüsselbunds.

Dadurch können Benutzer:

  • Melden Sie sich einmal an und bleiben Sie bei allen Apps angemeldet, die derselben Zugriffsgruppe angehören.
  • Melden Sie sich einmal ab und werden Sie bei allen Apps abgemeldet, die derselben Zugriffsgruppe angehören.

Teilen Sie den Authentifizierungsstatus zwischen Apps

So teilen Sie den Authentifizierungsstatus zwischen Apps:

  1. Richten Sie eine Zugriffsgruppe für Ihre Apps ein.

    Sie können entweder eine Schlüsselbundzugriffsgruppe oder eine App-Gruppe verwenden. Weitere Informationen finden Sie unter Teilen des Zugriffs auf Schlüsselbundelemente für eine Sammlung von Apps .

    Um eine Schlüsselbund-Zugriffsgruppe einzurichten, gehen Sie für jede App wie folgt vor:

    1. Gehen Sie in Xcode zu Projekteinstellungen > Funktionen .
    2. Aktivieren Sie die Schlüsselbundfreigabe.
    3. Fügen Sie eine Schlüsselbundgruppenkennung hinzu. Verwenden Sie für alle Apps, deren Status Sie teilen möchten, dieselbe Kennung.
  2. Legen Sie in jeder App die Zugriffsgruppe auf die Schlüsselbund-Zugriffsgruppe oder App-Gruppe fest, die Sie im vorherigen Schritt erstellt haben.

    Schnell

    do {
      try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1")
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Ziel c

    [FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1"
                                       error:nil];
    
  3. Melden Sie in mindestens einer App einen Benutzer mit einer beliebigen Anmeldemethode an.

    Schnell

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

    Ziel c

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

    In allen Apps der Zugriffsgruppe ist derselbe aktuelle Benutzer verfügbar.

    Schnell

    var user = Auth.auth().currentUser
    

    Ziel c

    FIRUser *user = FIRAuth.auth.currentUser;
    

Wechseln Sie zurück zu einem nicht freigegebenen Schlüsselbund

  1. Setzen Sie die Zugriffsgruppe auf nil , um die Freigabe des Authentifizierungsstatus zu beenden.

    Schnell

    do {
      try Auth.auth().useUserAccessGroup(nil)
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Ziel c

    [FIRAuth.auth useUserAccessGroup:nil error:nil];
    
  2. Melden Sie einen Benutzer mit einer beliebigen Anmeldemethode an. Der Benutzerstatus ist für keine anderen Apps verfügbar.

    Schnell

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

    Ziel c

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

Migrieren Sie einen angemeldeten Benutzer zu einem freigegebenen Schlüsselbund

So migrieren Sie einen Benutzer, der bereits angemeldet ist, in einen freigegebenen Status:

  1. Machen Sie für die zukünftige Verwendung einen Verweis auf den aktuellen Benutzer.

    Schnell

    var user = Auth.auth().currentUser
    

    Ziel c

    FIRUser *user = FIRAuth.auth.currentUser;
    
  2. (Optional) Überprüfen Sie den Authentifizierungsstatus der Zugriffsgruppe, die Sie freigeben möchten.

    Schnell

    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
    }
    

    Ziel 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. Verwenden Sie eine Zugriffsgruppe, die Sie zuvor in den Projekteinstellungen festgelegt haben.

    Schnell

    do {
      try Auth.auth().useUserAccessGroup(accessGroup)
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    

    Ziel c

    [FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
    
  4. Aktualisieren Sie den aktuellen Benutzer.

    Schnell

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

    Ziel c

    [FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) {
      // Error handling
    }];
    
  5. Auf den Benutzer kann jetzt von anderen Apps zugegriffen werden, die Zugriff auf dieselbe Zugriffsgruppe haben.