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:
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:
- W Xcode otwórz Ustawienia projektu > Możliwości.
- Włącz udostępnianie pęku kluczy.
- Dodaj identyfikator grupy pęku kluczy. Użyj tego samego identyfikatora dla wszystkich aplikacje, które chcesz udostępnić.
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];
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
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];
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:
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;
(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 }
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];
Zaktualizuj bieżącego użytkownika.
Auth.auth().updateCurrentUser(user!) { error in // Error handling }
[FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) { // Error handling }];
Dostęp do tego użytkownika mogą teraz uzyskać inne aplikacje, które mają dostęp do tej samej grupy dostępu.