Per condividere gli stati di autenticazione tra più app o estensioni sulle piattaforme Apple, memorizza lo stato di autenticazione in un portachiavi condiviso utilizzando i servizi portachiavi e configura le app in modo che utilizzino il portachiavi condiviso.
In questo modo, gli utenti possono:
- Accedere una sola volta e rimanere connessi a tutte le app che appartengono allo stesso gruppo di accesso.
- Disconnettersi una sola volta e rimanere disconnessi da tutte le app che appartengono allo stesso gruppo di accesso.
Condividere lo stato di autenticazione tra le app
Per condividere lo stato di autenticazione tra le app:
Configura un gruppo di accesso per le tue app.
Puoi utilizzare un gruppo di accesso al portachiavi o un gruppo di app. Per saperne di più, consulta Condividere l'accesso agli elementi del portachiavi tra una raccolta di app.
Per configurare un gruppo di accesso al portachiavi, procedi nel seguente modo per ogni app:
- In Xcode, vai a Impostazioni progetto > Funzionalità.
- Attiva la condivisione del portachiavi.
- Aggiungi un identificatore del gruppo di portachiavi. Utilizza lo stesso identificatore per tutte le app di cui vuoi condividere lo stato.
In ogni app, imposta il gruppo di accesso sul gruppo di accesso al portachiavi o sul gruppo di app che hai creato nel passaggio precedente.
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];In almeno un'app, consenti l'accesso a un utente con qualsiasi metodo di accesso.
Swift
Auth.auth().signInAnonymously { result, error in // User signed in }Objective-C
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];Lo stesso utente corrente è disponibile in tutte le app del gruppo di accesso.
Swift
var user = Auth.auth().currentUserObjective-C
FIRUser *user = FIRAuth.auth.currentUser;
Tornare a un portachiavi non condiviso
Imposta il gruppo di accesso su
nilper interrompere la condivisione dello stato di autenticazione.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];Consenti l'accesso a un utente con qualsiasi metodo di accesso. Lo stato dell'utente non sarà disponibile per altre app.
Swift
Auth.auth().signInAnonymously { result, error in // User signed in }Objective-C
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
Eseguire la migrazione di un utente che ha eseguito l'accesso a un portachiavi condiviso
Per eseguire la migrazione di un utente che ha già eseguito l'accesso a uno stato condiviso:
Crea un riferimento all'utente corrente per un utilizzo futuro.
Swift
var user = Auth.auth().currentUserObjective-C
FIRUser *user = FIRAuth.auth.currentUser;(Facoltativo) Controlla lo stato di autenticazione del gruppo di accesso che vuoi condividere.
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 }Utilizza un gruppo di accesso che hai impostato in precedenza nelle impostazioni progetto.
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];Aggiorna l'utente corrente.
Swift
Auth.auth().updateCurrentUser(user!) { error in // Error handling }Objective-C
[FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) { // Error handling }];Ora l'utente può essere accessibile da altre app che hanno accesso allo stesso gruppo di accesso.