Pour partager les états d'authentification entre plusieurs applications ou extensions sur les plates-formes Apple, stockez l'état d'authentification dans un trousseau partagé à l'aide des services de trousseau et configurez vos applications pour utiliser le trousseau partagé.
Cela permet aux utilisateurs de :
- Connectez-vous une fois et soyez connecté sur toutes les applications appartenant au même groupe d'accès.
- Déconnectez-vous une fois et déconnectez-vous de toutes les applications appartenant au même groupe d'accès.
Partager l'état d'authentification entre les applications
Pour partager l'état d'authentification entre les applications :
Configurez un groupe d'accès pour vos applications.
Vous pouvez utiliser soit un groupe d’accès au trousseau, soit un groupe d’applications. Voir Partage de l'accès aux éléments du trousseau parmi une collection d'applications pour plus de détails.
Pour configurer un groupe d'accès au trousseau, procédez comme suit pour chaque application :
- Dans Xcode, accédez à Project settings > Capabilities .
- Activez le partage de trousseau.
- Ajoutez un identifiant de groupe de trousseau. Utilisez le même identifiant pour toutes les applications dont vous souhaitez partager l’état.
Dans chaque application, définissez le groupe d'accès sur le groupe d'accès au trousseau ou le groupe d'applications que vous avez créé à l'étape précédente.
Rapide
do { try Auth.auth().useUserAccessGroup("TEAMID.com.example.group1") } catch let error as NSError { print("Error changing user access group: %@", error) }
Objectif c
[FIRAuth.auth useUserAccessGroup:@"TEAMID.com.example.group1" error:nil];
Dans au moins une application, connectez un utilisateur avec n’importe quelle méthode de connexion.
Rapide
Auth.auth().signInAnonymously { result, error in // User signed in }
Objectif c
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
Le même utilisateur actuel est disponible dans toutes les applications du groupe d'accès.
Rapide
var user = Auth.auth().currentUser
Objectif c
FIRUser *user = FIRAuth.auth.currentUser;
Revenir à un trousseau non partagé
Définissez le groupe d’accès sur
nil
pour arrêter de partager l’état d’authentification.Rapide
do { try Auth.auth().useUserAccessGroup(nil) } catch let error as NSError { print("Error changing user access group: %@", error) }
Objectif c
[FIRAuth.auth useUserAccessGroup:nil error:nil];
Connectez un utilisateur avec n’importe quelle méthode de connexion. L'état utilisateur ne sera disponible pour aucune autre application.
Rapide
Auth.auth().signInAnonymously { result, error in // User signed in }
Objectif c
[FIRAuth signInAnonymouslyWithCompletion:^(FIRAuthDataResult *_Nullable result, NSError *_Nullable error) { // User signed in }];
Migrer un utilisateur connecté vers un trousseau partagé
Pour migrer un utilisateur déjà connecté vers un état partagé :
Faites une référence à l'utilisateur actuel pour une utilisation future.
Rapide
var user = Auth.auth().currentUser
Objectif c
FIRUser *user = FIRAuth.auth.currentUser;
(Facultatif) Vérifiez l'état d'authentification du groupe d'accès que vous souhaitez partager.
Rapide
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 }
Objectif 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 }
Utilisez un groupe d'accès que vous avez préalablement défini dans les paramètres du projet.
Rapide
do { try Auth.auth().useUserAccessGroup(accessGroup) } catch let error as NSError { print("Error changing user access group: %@", error) }
Objectif c
[FIRAuth.auth useUserAccessGroup:accessGroup error:nil];
Mettez à jour l'utilisateur actuel.
Rapide
Auth.auth().updateCurrentUser(user!) { error in // Error handling }
Objectif c
[FIRAuth.auth updateCurrentUser:user completion:^(NSError * _Nullable error) { // Error handling }];
L'utilisateur est désormais accessible par d'autres applications ayant accès au même groupe d'accès.