Maintenir la connexion de l’utilisateur avec Auth0.swift
Lorsqu’une authentification est effectuée avec le scope offline_access, un est renvoyé et peut être utilisé pour demander un nouveau jeton sans redemander les identifiants de connexion.
Auth0.swift fournit une classe utilitaire pour simplifier le stockage et le renouvellement des identifiants. Vous pouvez accéder aux propriétés accessToken ou idToken dans l’instance Credentials. Il s’agit de la méthode recommandée pour gérer les identifiants de l’utilisateur.Importez d’abord le module Auth0 :import Auth0Affichez ensuite la page :
let credentialsManager = CredentialsManager(authentication: Auth0.authentication())Auth0 .webAuth() .scope("openid profile offline_access") .start { result in switch result { case .success(let credentials): // Transmettre les identifiants au gestionnaire des identifiants credentialsManager.store(credentials: credentials) case .failure(let error): // Gérer l'erreur }}
Les éléments du trousseau ne sont pas supprimés après la désinstallation de votre application. Nous vous recommandons de toujours effacer tous les éléments du trousseau de votre application au premier lancement.
Il peut être utile d’effectuer une vérification rapide au démarrage de l’application pour vous assurer que des identifiants pouvant être renouvelés sont enregistrés dans le gestionnaire. Sinon, l’utilisateur peut être redirigé vers l’authentification.
guard credentialsManager.canRenew() else { // Afficher la page de connexion}
Vous pouvez récupérer les identifiants de l’utilisateur comme suit :
credentialsManager.credentials { result in switch result { case .success(let credentials): // Identifiants valides ; vous pouvez accéder aux propriétés du jeton telles que // `idToken`, `accessToken` case .failure(let error): // Gérer l'erreur, afficher la page de connexion }}
Le renouvellement des identifiants d’un utilisateur fonctionne exactement de la même façon si le jeton a expiré. Le gestionnaire des identifiants renouvellera automatiquement les identifiants, stockera les identifiants renouvelés dans le trousseau, puis renverra un Result contenant soit les identifiants, soit une erreur.
Cette section s’adresse aux développeurs qui préfèrent ne pas utiliser le gestionnaire d’identifiants. Nous fournissons l’utilitaire SimpleKeychain — une fine couche d’abstraction sur le trousseau du système — que vous pouvez utiliser pour stocker les jetons de façon sécurisée.Commencez par importer le module SimpleKeychain :import SimpleKeychainEnsuite, créez une instance et stockez les jetons dont vous avez besoin. Dans ce cas-ci, vous stockerez access_token et refresh_token dans le trousseau après une authentification réussie.
let keychain = SimpleKeychain(service: "Auth0")Auth0 .webAuth() .scope("openid profile offline_access") .start { result in switch result { case .success(let credentials): guard let refreshToken = credentials.refreshToken else { // Gérer l'erreur return } // Stocker les tokens do { try keychain.set(credentials.accessToken, forKey: "access_token") try keychain.set(refreshToken, forKey: "refresh_token") } catch { // Gérer l'erreur } // Vous voudrez peut-être rediriger vers le flux principal de votre application à ce stade case .failure(let error): // Gérer l'erreur }}
Une fois qu’elles sont stockées, vous pouvez en tout temps demander une nouvelle instance de Credentials.