# Utilisation d'OAuth avec des comptes Standard Utilisez le flux de connexion OAuth pour permettre à un utilisateur Stripe de se connecter à votre plateforme. OAuth n’est pas recommandé pour les nouvelles plateformes *Connect* (Connect is Stripe's solution for multi-party businesses, such as marketplace or software platforms, to route payments between sellers, customers, and other recipients). Nous recommandons plutôt d’utiliser l’[onboarding Connect pour les comptes Standard](https://docs.stripe.com/connect/standard-accounts.md). Depuis juin 2021, les plateformes utilisant OAuth en `read_write` ne peuvent plus se connecter à des comptes Standard contrôlés par une autre plateforme. Les [Extensions](https://docs.stripe.com/building-extensions.md) ne subiront aucun changement dans le fonctionnement d’OAuth. En savoir plus sur les [modifications d’OAuth pour les comptes Standard contrôlés par la plateforme](https://docs.stripe.com/connect/oauth-changes-for-standard-platforms.md). ## Le flux de connexion OAuth Un utilisateur se connecte à votre plateforme à l’aide du flux de connexion OAuth suivant : 1. À partir d’une page de votre site, l’utilisateur clique sur un [lien](https://docs.stripe.com/connect/oauth-standard-accounts.md#integrating-oauth) le redirigeant vers Stripe, indiquant ainsi le `client_id` de votre plateforme. 1. Sur le site Web de Stripe, l’utilisateur fournit les informations nécessaires pour se [connecter](https://docs.stripe.com/connect/oauth-standard-accounts.md#connect-users) à votre plateforme. 1. L’utilisateur est [redirigé](https://docs.stripe.com/connect/oauth-standard-accounts.md#redirected) vers votre site, avec un code d’autorisation. 1. Votre site envoie alors une requête à l’[endpoint de token OAuth](https://docs.stripe.com/connect/oauth-standard-accounts.md#token-request) pour finaliser la connexion et récupérer l’ID de compte de l’utilisateur. > En tant que plateforme, n’oubliez pas que les données créées pour un compte (les paiements, clients, *factures* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice), etc.) seront visibles sur le compte Stripe de l’utilisateur. Cela signifie également que si l’utilisateur connecte d’autres plateformes, ces dernières ont aussi accès aux données. ## Créez le lien OAuth Ce guide vous explique comment créer un compte connecté en utilisant du code. Si vous n’êtes pas encore prêt pour l’intégration, vous pouvez commencer par créer un compte connecté [via le Dashboard](https://docs.stripe.com/connect/dashboard/managing-individual-accounts.md). Pour démarrer votre intégration, accédez à vos [options d’inscription Connect OAuth](https://dashboard.stripe.com/settings/connect/onboarding-options/oauth) et : - Activez l’inscription de comptes avec OAuth dans les [paramètres OAuth](https://dashboard.stripe.com/settings/connect/onboarding-options/oauth). - Copiez votre `client_id`, un identifiant unique de votre plateforme généré par Stripe. - Définissez votre `redirect_uri`, l’URL vers laquelle votre utilisateur sera redirigé après avoir connecté son compte. Vous devez spécifier toutes les URL de redirection dans les paramètres de votre plateforme. Si vous n’incluez pas le paramètre `redirect_uri` dans votre requête, Stripe utilisera par défaut la première adresse configurée dans les paramètres de votre plateforme. Stripe fournit également un [client_id](https://dashboard.stripe.com/test/settings/connect/onboarding-options/oauth) pour permettre [d’effectuer des tests](https://docs.stripe.com/connect/testing.md#using-oauth). Chaque `client_id` est un identifiant réel ou de test. Utilisez un `client_id` d’environnement de test pour vous connecter à un compte dans un environnement de test. Avec ces informations à votre disposition, vous pouvez désormais créer le lien OAuth. Nous vous recommandons d’afficher un bouton **Se connecter avec Stripe** qui redirige les utilisateurs vers l’endpoint `authorize_url` : ```url https://connect.stripe.com/oauth/authorize?response_type=code&client_id=ca_FkyHCg7X8mlvCUdMDao4mMxagUfhIwXb&scope=read_write ``` L’endpoint Stripe doit recevoir au moins les trois paramètres suivants : 1. `response_type`, avec une valeur de **code** 1. Votre `client_id` 1. `scope`, avec une valeur de **read\_write** Le paramètre `scope` définit ce que votre plateforme peut effectuer au nom du compte connecté, **read\_only** étant la valeur par défaut. Ajoutez le paramètre `state` avec un token unique comme valeur afin d’éviter toute attaque CSRF. Nous inclurons le `state` fourni lorsque nous redirigerons l’utilisateur vers votre site. Votre site doit confirmer que le paramètre `state` n’a pas été modifié. Voici comment l’URL ci-dessus peut s’afficher pour votre utilisateur lorsqu’il souhaite démarrer la connexion en cliquant sur notre [bouton Connexion à Stripe](https://d37ugbyn3rpeym.cloudfront.net/docs/connect/Connect-with-Stripe-button.zip) : ### Personnaliser l’inscription avec les paramètres OAuth Vous pouvez modifier le comportement du flux d’inscription en intégrant des paramètres d’URL supplémentaires dans votre lien OAuth. La liste complète des paramètres disponibles est accessible dans la [documentation relative à OAuth](https://docs.stripe.com/connect/oauth-reference.md). ## L'utilisateur crée un compte ou se connecte à son compte Une fois que l’utilisateur a cliqué sur le lien de votre site, il est redirigé vers le site Web de Stripe. Il lui sera alors demandé d’accepter ou de refuser la connexion à votre plateforme. Le processus de création d’un compte Stripe est intégré à notre flux d’autorisation. Il n’est pas nécessaire de vous demander si vos utilisateurs possèdent déjà un compte ou non. ![](https://b.stripecdn.com/docs-statics-srv/assets/oauth-select-account.536d5cf58d244be2ff9723b78c4817e8.png) L’utilisateur est connecté et peut sélectionner un compte pour se connecter directement à votre plateforme. ![](https://b.stripecdn.com/docs-statics-srv/assets/oauth-register.fa953a975b7eb6112dddf8faaff24f67.png) L’utilisateur doit créer un compte. ## L'utilisateur est redirigé vers votre site Une fois que l’utilisateur a connecté son nouveau compte ou son compte existant à votre plateforme, il est redirigé vers votre site, à l’URL définie comme valeur `redirect_uri` pour votre plateforme. Pour les connexions réussies, les valeurs suivantes sont transmises dans l’URL : - Le paramètre `scope` accordé - La valeur `state`, le cas échéant - Un code d’autorisation. Le code d’autorisation est un code éphémère et ne peut être utilisé qu’une seule fois, dans la requête POST décrite à l’étape suivante. ```url https://connect.stripe.com/connect/default/oauth/test?scope=read_write&code={AUTHORIZATION_CODE} ``` Si l’utilisateur refuse l’autorisation, il est redirigé vers votre site, mais l’URL comprend une erreur au lieu d’un code d’autorisation : ```url https://connect.stripe.com/connect/default/oauth/test?error=access_denied&error_description=The%20user%20denied%20your%20request ``` ## La plateforme finalise la connexion au compte Intégrez le `code` d’autorisation fourni dans une requête POST à l’endpoint de token de Stripe pour finaliser la connexion et récupérer l’ID de compte de l’utilisateur : #### curl ```bash curl https://connect.stripe.com/oauth/token \ -u <>: \ -d "code"="ac_123456789" \ -d "grant_type"="authorization_code" ``` Notez que la requête sera effectuée avec votre clé secrète d’API de test ou de production, selon que vous souhaitez obtenir un token d’accès de test ou de production. Stripe renvoie une réponse incluant l’ID de compte (`stripe_user_id`) de l’utilisateur : ```json { "token_type": "bearer", "scope": "read_write", "livemode": false, "stripe_user_id": ""{{CONNECTED_ACCOUNT_ID}}"", } ``` Lorsqu’un problème survient, nous renvoyons plutôt une erreur : ```json { "error": "invalid_grant", "error_description": "Authorization code does not exist: {AUTHORIZATION_CODE}" } ``` Vous avez terminé ! L’utilisateur est désormais connecté à votre plateforme. Conservez le paramètre `stripe_user_id` dans votre base de données. Il s’agit de l’ID du compte Stripe du nouveau compte. Vous utiliserez cette valeur pour [authentifier](https://docs.stripe.com/connect/authentication.md) celui-ci comme le compte connecté en l’intégrant dans les requêtes dans l’en-tête `Stripe-Account`. Dans votre application, vous pouvez envisager d’utiliser une bibliothèque client OAuth dédiée pour simplifier ces étapes. Pour trouver une bibliothèque OAuth pour votre langue ou cadre, vous pouvez consulter la [liste des bibliothèques clients](https://oauth.net/code/) disponible sur le site Web OAuth. La requête `refresh_token` peut être utilisée pour [générer des tokens d’accès de test](https://docs.stripe.com/connect/testing.md#creating-accounts) pour un `client_id` de production ou pour renouveler votre token d’accès. Conservez cette valeur, car vous ne pourrez l’obtenir qu’après cette requête POST initiale. > **Conservez l’ID de compte reçu !** Les plateformes ont besoin de cette information pour effectuer des requêtes au nom de l’utilisateur. ## Accès révoqué et révocation de l’accès Un [événement](https://docs.stripe.com/api.md#list_events) `account.application.deauthorized` se produit lorsqu’un utilisateur déconnecte votre plateforme de son compte. En guettant cet événement à l’aide de [webhooks](https://docs.stripe.com/connect/webhooks.md), vous pouvez effectuer le nettoyage nécessaire sur vos serveurs. Pour déconnecter un compte ayant accès au Dashboard Stripe de votre plateforme, entrez votre `client_id` et l’ID du compte connecté dans le paramètre `connect.stripe.com/oauth/deauthorize` : #### curl ```bash curl https://connect.stripe.com/oauth/deauthorize \ -u <>: \ -d client_id="ca_FkyHCg7X8mlvCUdMDao4mMxagUfhIwXb" \ -d stripe_user_id=acct_ON3nXtRQkhmUIQ ``` Vous pouvez utiliser l’API au nom de votre utilisateur pour accepter des paiements, configurer une facturation récurrente, récupérer les données d’un compte, etc. ## See also - [Authentification](https://docs.stripe.com/connect/authentication.md) - [Référence OAuth](https://docs.stripe.com/connect/oauth-reference.md) - [Documentation complète relative à l’API](https://docs.stripe.com/api.md)