Aby udostępniać stany uwierzytelniania w wielu aplikacjach lub rozszerzeniach na platformach Apple, przechowuj stan uwierzytelniania w wspólnym sejfie kluczy za pomocą usług sejfu kluczy i skonfiguruj aplikacje tak, aby korzystały z wspólnego sejfu kluczy.
Dzięki temu użytkownicy mogą:
- Zaloguj się raz, aby uzyskać dostęp do wszystkich aplikacji należących do tej samej grupy dostępu.
- 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ępnić stan autoryzacji 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 klucza szyfrującego, wykonaj te czynności w przypadku każdej aplikacji:
- W Xcode kliknij Ustawienia projektu > Możliwości.
- Włącz udostępnianie łańcucha kluczy.
- Dodaj identyfikator grupy pęku kluczy. Używaj tego samego identyfikatora we wszystkich aplikacjach, których stan chcesz udostępniać.
W każdej aplikacji ustaw grupę dostępu na grupę dostępu do pęku kluczy lub grupę aplikacji utworzony w poprzednim kroku.
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];
Zaloguj użytkownika za pomocą dowolnej metody logowania w przynajmniej 1 aplikacji.
Swift
Auth.auth().signInAnonymously { result, error in // User signed in }
Objective-C
[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.
Swift
var user = Auth.auth().currentUser
Objective-C
FIRUser *user = FIRAuth.auth.currentUser;
Przełączanie się z podziałem na klucze na niedzielone klucze
Aby przestać udostępniać stan autoryzacji, ustaw grupę dostępu na
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];
Loguj użytkownika za pomocą dowolnej metody logowania. Stan użytkownika nie będzie dostępny do innych aplikacji.
Swift
Auth.auth().signInAnonymously { result, error in // User signed in }
Objective-C
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
Migracja zalogowanego użytkownika do udostępnionego sejfu kluczy
Aby przenieść konto użytkownika, który jest już zalogowany do stanu wspólnego:
odwoływać się do bieżącego użytkownika na potrzeby przyszłe.
Swift
var user = Auth.auth().currentUser
Objective-C
FIRUser *user = FIRAuth.auth.currentUser;
(Opcjonalnie) Sprawdź stan uwierzytelniania grupy dostępu, którą chcesz udostępnić.
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 }
Użyj grupy dostępu skonfigurowanej wcześniej w ustawieniach projektu.
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];
Zaktualizuj obecnego użytkownika.
Swift
Auth.auth().updateCurrentUser(user!) { error in // Error handling }
Objective-C
[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.