> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-actions-triggers-prototype.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Auth0.swift

> Comment installer et démarrer avec Auth0.swift

<Card title="Overview">
  Trousse SDK pour Swift pour iOS, macOS, tvOS et watchOS qui vous permet une intégration fluide d’Auth0 dans vos applications. Ajoutez en toute sécurité les informations de connexion, déconnexion et stockage et accédez aux informations des utilisateurs.

  **Voir le** [**répertoire GitHub**](https://github.com/auth0/Auth0.swift)

  **Vous migrez depuis la v1? Consultez le**[**Guide de migration**](https://github.com/auth0/Auth0.swift/blob/master/V2_MIGRATION_GUIDE.md)
</Card>

## Documentation

* [Démarrage rapide](https://auth0.com/docs/quickstart/native/ios-swift/interactive) : Montre comment intégrer Auth0.swift dans une application iOS/macOS à partir de zéro.
* [Application démo](https://github.com/auth0-samples/auth0-ios-swift-sample/tree/master/Sample-01) : Une application iOS / macOS complète et opérationnelle que vous pouvez essayer.
* [Exemples](https://github.com/auth0/Auth0.swift/blob/master/EXAMPLES.md) : Explique comment utiliser la plupart des fonctionnalités.
* [Documentation pour l’API](https://auth0.github.io/Auth0.swift/documentation/auth0) : Documentation générée automatiquement à partir des commentaires du code qui explique toutes les fonctionnalités disponibles.

  * [Web Auth](https://auth0.github.io/Auth0.swift/documentation/auth0/webauth)
  * [Gestionnaire des identifiants](https://auth0.github.io/Auth0.swift/documentation/auth0/credentialsmanager)
  * [Client Authentication API](https://auth0.github.io/Auth0.swift/documentation/auth0/authentication)
  * [Management API Client (Utilisateurs)](https://auth0.github.io/Auth0.swift/documentation/auth0/users)
* [FAQ](https://github.com/auth0/Auth0.swift/blob/master/FAQ.md) : Répond à quelques questions courantes sur Auth0.swift.
* [Documentation Auth0 :](https://auth0.com/docs) Explorez notre site de documentation pour en savoir plus sur Auth0.

## Démarrage

### Exigences

* iOS 13.0+ / macOS 11.0+ / tvOS 13.0+ / watchOS 7.0+
* Xcode 14.x
* Swift 5.7+

<Warning>
  Consultez la [Politique d’assistance](https://github.com/auth0/Auth0.swift/tree/master#support-policy) pour découvrir quand l’abandon des versions de Xcode, Swift et de la plateforme ne sera pas considéré comme un **changement majeur**.
</Warning>

### Installation

#### Gestionnaire de paquets Swift

Ouvrez l’élément de menu suivant dans Xcode :

**Fichiers > Ajouter des packages...**

Dans la boîte de recherche **Rechercher ou entrer un package URL** entrez cette URL :

```lines theme={null}
https://github.com/auth0/Auth0.swift
```

Sélectionnez ensuite la règle de dépendance et appuyez sur **Ajouter un package**.

#### Cocoapods

Ajoutez la ligne suivante à votre `Podfile` :

```lines theme={null}
pod 'Auth0', '~> 2.0'
```

Exécutez ensuite `pod install`.

#### Carthage

Ajoutez la ligne suivante à votre `Cartfile` :

```lines theme={null}
github "auth0/Auth0.swift" ~> 2.0
```

Exécutez ensuite `carthage bootstrap --use-xcframeworks`.

### Configurer la trousse SDK

Allez sur [Auth0 Dashboard](https://manage.auth0.com/#/applications/) et créez une nouvelle application **Native**.

Auth0.swift a besoin de l’**ID client** et du **domaine** de l’application Auth0 pour communiquer avec Auth0. Vous trouverez ces informations dans la page « Settings » (Paramètres) de votre application Auth0. Si vous utilisez un [domaine personnalisé](/docs/fr-ca/customize/custom-domains), utilisez la valeur de votre domaine personnalisé au lieu de la valeur de la page Paramètres.

#### Configurer l’ID client et le domaine avec une plist

Créez un fichier `plist` nommé `Auth0.plist` dans le package d’application avec le contenu suivant :

```xml lines theme={null}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ClientId</key>
    <string>{yourAuth0ClientId}</string>
    <key>Domain</key>
    <string>{yourAuth0Domain}</string>
</dict>
</plist>
```

#### Configurer l’ID client et le domaine par programme

##### Pour Web Auth

```swift lines theme={null}
Auth0
    .webAuth(clientId: "{yourAuth0ClientID}", domain: "{yourAuth0Domain}")
    // ...
```

##### Pour le client Authentication API

```swift lines theme={null}
Auth0
    .authentication(clientId: "{yourAuth0ClientID}", domain: "{yourAuth0Domain}")
    // ...
```

##### Pour le client Management API (utilisateurs)

```swift lines theme={null}
Auth0
    .users(token: credentials.accessToken, domain: "{yourAuth0Domain}")
    // ...
```

### Configurer Web Auth (iOS/macOS)

#### Configurer l’URL de rappel et l’URL de déconnexion

L’URL de rappel et l’URL de déconnexion sont les URL qu’invoque Auth0 pour rediriger vers votre application. Auth0 invoque l’URL de rappel après avoir authentifié l’utilisateur, et l’URL de déconnexion après avoir supprimé le témoin de session.

Comme l’URL de rappel et l’URL déconnexion peuvent être manipulées, vous devrez ajouter vos URL aux champs **URL de rappel autorisées** et **URL de déconnexion autorisées** dans la page Paramètres de votre application Auth0. Cela permettra à Auth0 de reconnaître ces URL comme valides. Si les champs des URL de rappel et URL de déconnexion ne sont pas définis, les utilisateurs ne pourront pas se connecter et se déconnecter de l’application et obtiendront une erreur.

Accédez à la page Paramètres de votre application [Auth0](https://manage.auth0.com/#/applications/) et ajoutez les URL correspondantes à l’**URL de rappel autorisée** et **URL de déconnexion autorisées**, en fonction de la plateforme de votre application. Si vous utilisez un [domaine personnalisé](/docs/fr-ca/customize/custom-domains), remplacez `{yourAuth0Domain}` par la valeur de votre domaine personnalisé au lieu de la valeur de la page Paramètres.

##### iOS

```json lines theme={null}
{yourBundleIdentifier}://{yourAuth0Domain}/ios/{yourBundleIdentifier}/callback
```

##### macOS

```json lines theme={null}
{yourBundleIdentifier}://{yourAuth0Domain}/macos/{yourBundleIdentifier}/callback
```

Par exemple, si votre identifiant de paquet iOS était `com.example.MyApp` et que votre domaine Auth0 était `example.us.auth0.com`, alors cette valeur serait :

```lines theme={null}
com.example.MyApp://example.us.auth0.com/ios/com.example.MyApp/callback
```

<Warning>
  Assurez-vous que le paramètre [**Méthode d’authentification du point de terminaison des jetons**](/docs/fr-ca/get-started/applications/confidential-and-public-applications/view-application-type) est réglé sur `None`.
</Warning>

#### Configurer le schéma personnalisé des URL

Dans Xcode, allez dans l’onglet **Info** des paramètres de la cible de votre application. Dans la section **Types d’URL**, cliquez sur le bouton **＋** pour ajouter une nouvelle entrée. Saisissez `auth0` dans le champ **Identifiant** et `$(PRODUCT_BUNDLE_IDENTIFIER)` dans le champ **Schémas des URL**.

Cela permet d’enregistrer l’identifiant de votre package en tant qu’URL de schéma personnalisé, afin que l’URL de rappel et l’URL de déconnexion puissent atteindre votre application.

### Connexion Web Auth (iOS / macOS)

Importez le module `Auth0` dans le fichier où vous souhaitez présenter la page de connexion.

```swift lines theme={null}
import Auth0
```

Ensuite, présentez la page [Connexion universelle](/docs/fr-ca/authenticate/login/auth0-universal-login) dans l’action de votre bouton **Connexion**.

```swift lines theme={null}
Auth0
    .webAuth()
    .start { result in
        switch result {
        case .success(let credentials):
            print("Obtained credentials: \(credentials)")
        case .failure(let error):
            print("Failed with: \(error)")
        }
    }
```

#### Utiliser async/await

```swift lines theme={null}
do {
    let credentials = try await Auth0.webAuth().start()
    print("Obtained credentials: \(credentials)")
} catch {
    print("Failed with: \(error)")
}
```

#### Utiliser Combine

```swift lines theme={null}
Auth0
    .webAuth()
    .start()
    .sink(receiveCompletion: { completion in
        if case .failure(let error) = completion {
            print("Failed with: \(error)")
        }
    }, receiveValue: { credentials in
        print("Obtained credentials: \(credentials)")
    })
    .store(in: &cancellables)
```

### Déconnexion Web Auth (iOS / macOS)

Pour déconnecter l’utilisateur, il faut effacer le témoin de la session de connexion universelle, puis supprimer les identifiants de l’utilisateur de votre application.

Appelez la méthode `clearSession()` dans l’action de votre bouton **Déconnexion**. Une fois le témoin de session effacé, [supprimez les identifiants de l’utilisateur](https://github.com/auth0/Auth0.swift/blob/master/EXAMPLES.md#clear-stored-credentials).

```swift lines theme={null}
Auth0
    .webAuth()
    .clearSession { result in
        switch result {
        case .success:
            print("Session cookie cleared")
            // Delete credentials
        case .failure(let error):
            print("Failed with: \(error)")
        }
    }
```

#### Utiliser async/await

```swift lines theme={null}
do {
    try await Auth0.webAuth().clearSession()
    print("Session cookie cleared")
    // Delete credentials
} catch {
    print("Failed with: \(error)")
}
```

#### Utiliser Combine

```swift lines theme={null}
Auth0
    .webAuth()
    .clearSession()
    .sink(receiveCompletion: { completion in
        switch completion {
        case .finished:
            print("Session cookie cleared")
            // Delete credentials
        case .failure(let error):
            print("Failed with: \(error)")
        }
    }, receiveValue: {})
    .store(in: &cancellables)
```

### Boîte d’alerte SSO (iOS / macOS)

<Frame>
  <img src="https://mintcdn.com/docs-dev-actions-triggers-prototype/gqbf-XGz7-Z2BrZ6/docs/images/fr-ca/cdy7uua7fh8z/c7JkfRnkm3HC12OqbNcpf/74cad82d875e50b2dca62088d44c2db9/sso-alert.png?fit=max&auto=format&n=gqbf-XGz7-Z2BrZ6&q=85&s=a32d1f6ae910418037d438f383385395" alt="undefined" width="323" height="200" data-path="docs/images/fr-ca/cdy7uua7fh8z/c7JkfRnkm3HC12OqbNcpf/74cad82d875e50b2dca62088d44c2db9/sso-alert.png" />
</Frame>

Consultez la [FAQ](https://github.com/auth0/Auth0.swift/blob/master/FAQ.md) pour plus d’informations sur la boîte d’alerte qui s’affiche par défaut lors de l’utilisation de Web Auth.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Voir aussi [Comment créer une expérience SSO (Authentification unique) mobile transparente sur iOS](https://developer.okta.com/blog/2022/01/13/mobile-sso) pour une présentation détaillée.
</Callout>

## Prochaines étapes

En savoir plus sur la majorité des fonctions dans [Exemples](https://github.com/auth0/Auth0.swift/blob/master/EXAMPLES.md) :

* [Enregistrer les identifiants](https://github.com/auth0/Auth0.swift/blob/master/EXAMPLES.md#store-credentials) : stockez les identifiants de l’utilisateur en toute sécurité dans le Keychain.
* [Chercher des identifiants enregistrés](https://github.com/auth0/Auth0.swift/blob/master/EXAMPLES.md#check-for-stored-credentials) : vérifiez si l’utilisateur est déjà connecté au démarrage de votre application.
* [Récupérer des identifiants](https://github.com/auth0/Auth0.swift/blob/master/EXAMPLES.md#retrieve-stored-credentials) : récupère les identifiants de l’utilisateur dans le Keychain et les renouvelle automatiquement si elles ont expiré.
* [Effacer des identifiants enregistrés](https://github.com/auth0/Auth0.swift/blob/master/EXAMPLES.md#clear-stored-credentials) : supprime les identifiants de l’utilisateur pour terminer le processus de déconnexion.
* [Récupérer des informations sur l’utilisateur](https://github.com/auth0/Auth0.swift/blob/master/EXAMPLES.md#retrieve-user-information) : Obtenir les dernières informations sur l’utilisateur à partir du point de terminaison `/userinfo`.
