Włączanie uwierzytelniania w różnych aplikacjach za pomocą udostępnionego pęku kluczy Apple

Aby udostępniać stany uwierzytelniania wielu aplikacjom lub rozszerzeniom na platformach Apple, zapisz stan uwierzytelniania we współdzielonym pęku kluczy za pomocą usług pęku kluczy i skonfigurować aplikacje tak, aby korzystały z udostępnionego pęku kluczy.

Dzięki temu użytkownicy mogą:

  • Zaloguj się raz we wszystkich aplikacjach, które mają ten sam poziom dostępu grupy reklam.
  • Wylogować się raz i we wszystkich aplikacjach, które mają ten sam poziom dostępu grupy reklam.
.

Udostępnianie stanu uwierzytelniania między aplikacjami

Aby udostępniać stan uwierzytelniania między aplikacjami:

  1. Skonfiguruj grupę dostępu dla swoich aplikacji.

    Możesz użyć grupy dostępu do pęku kluczy lub grupy aplikacji. Zobacz Przyznawanie dostępu do pęku kluczy w kolekcji aplikacji .

    Aby skonfigurować grupę dostępu do pęku kluczy, w przypadku każdej aplikacji wykonaj te czynności:

    1. W Xcode otwórz Ustawienia projektu > Możliwości.
    2. Włącz udostępnianie pęku kluczy.
    3. Dodaj identyfikator grupy pęku kluczy. Użyj tego samego identyfikatora dla wszystkich aplikacje, które chcesz udostępnić.
  2. W każdej aplikacji ustaw grupę dostępu na grupę dostępu do pęku kluczy lub grupę aplikacji utworzony w poprzednim kroku.

    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];
    
  3. W co najmniej 1 aplikacji zaloguj użytkownika za pomocą dowolnej metody logowania.

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

    Ten sam bieżący użytkownik jest dostępny we wszystkich aplikacjach w grupie dostępu.

    var user = Auth.auth().currentUser
    
    FIRUser *user = FIRAuth.auth.currentUser;
    

Przełącz się z powrotem na nieudostępniony pęk kluczy

  1. Aby zatrzymać udostępnianie stanu uwierzytelniania, ustaw grupę dostępu na 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];
    
  2. Loguj użytkownika za pomocą dowolnej metody logowania. Stan użytkownika nie będzie dostępny do innych aplikacji.

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

Przenoszenie zalogowanego użytkownika do udostępnionego pęku kluczy

Aby przenieść konto użytkownika, który jest już zalogowany do stanu wspólnego:

  1. Utwórz odwołanie do obecnego użytkownika, aby użyć go w przyszłości.

    var user = Auth.auth().currentUser
    
    FIRUser *user = FIRAuth.auth.currentUser;
    
  2. (Opcjonalnie) Sprawdź stan uwierzytelniania grupy dostępu, którą chcesz udostępnić.

    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
    }
    
  3. Użyj grupy dostępu skonfigurowanej wcześniej w ustawieniach projektu.

    do {
      try Auth.auth().useUserAccessGroup(accessGroup)
    } catch let error as NSError {
      print("Error changing user access group: %@", error)
    }
    
    [FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
    
  4. Zaktualizuj bieżącego użytkownika.

    Auth.auth().updateCurrentUser(user!) { error in
      // Error handling
    }
    
    [FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) {
      // Error handling
    }];
    
  5. Dostęp do tego użytkownika mogą teraz uzyskać inne aplikacje, które mają dostęp do tej samej grupy dostępu.