# OAuth mit Standard-Konten verwenden Verwenden Sie den OAuth-Verbindungsvorgang, um einem/einer Stripe-Nutzer/in zu erlauben, sich mit Ihrer Plattform zu verbinden. OAuth wird für neue *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)-Plattformen nicht empfohlen. Wir empfehlen stattdessen die Verwendung von [Connect-Onboarding für Standard-Konten](https://docs.stripe.com/connect/standard-accounts.md). Ab Juni 2021 werden Plattformen, die OAuth mit `read_write` verwenden, keine Verbindung zu Standard-Konten mehr herstellen können, die von einer anderen Plattform gesteuert werden. Bei [Erweiterungen](https://docs.stripe.com/building-extensions.md) werden keine Veränderungen im Verhalten von OAuth auftreten. Erfahren Sie mehr über [OAuth-Änderungen für plattformgesteuerte Standard-Konten](https://docs.stripe.com/connect/oauth-changes-for-standard-platforms.md). ## Der OAuth-Verbindungsvorgang Ein/e Nutzer/in verbindet sich mithilfe des OAuth-Verbindungsvorgangs mit Ihrer Plattform: 1. Von einer Seite auf Ihrer Website aus klickt der/die Nutzer/in einen [Link](https://docs.stripe.com/connect/oauth-standard-accounts.md#integrating-oauth) an, der ihn/sie an Stripe weiterleitet und dabei wird die `client_id` Ihrer Plattform weitergegeben. 1. Auf der Website von Stripe stellt der/die Nutzer/in die Informationen bereit, die erforderlich sind, um sich mit Ihrer Plattform zu [verbinden](https://docs.stripe.com/connect/oauth-standard-accounts.md#connect-users). 1. Der/die Nutzer/in wird zusammen mit einem Autorisierungscode auf Ihre Seite [umgeleitet](https://docs.stripe.com/connect/oauth-standard-accounts.md#redirected). 1. Ihre Seite führt dann eine Anfrage an den [OAuth-Token-Endpoint](https://docs.stripe.com/connect/oauth-standard-accounts.md#token-request) von Stripe aus, um die Verbindung abzuschließen und die Konto-ID des Nutzers/der Nutzerin abzurufen. > Denken Sie daran, dass die Daten, die Sie als Plattform für ein Konto erstellen (z. B. Zahlungen, Kundinnen/Kunden, *Rechnungen* (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) usw.) in den Stripe-Konten sichtbar sind. Wenn diese sich mit anderen Plattformen verbinden, können diese Plattformen ebenfalls auf diese Daten zugreifen. ## Erstellen Sie den OAuth-Link In diesem Leitfaden erfahren Sie, wie Sie Coding zum Erstellen eines verbundenen Kontos verwenden. Wenn Sie noch nicht bereit für die Integration sind, können Sie zunächst ein verbundenes Konto [über das Dashboard](https://docs.stripe.com/connect/dashboard/managing-individual-accounts.md) erstellen. Gehen Sie zu Ihren [Connect OAuth-Onboarding-Optionen](https://dashboard.stripe.com/settings/connect/onboarding-options/oauth), um Ihre Integration zu starten und: - Ermöglichen Sie das Onboarding von Konten mit OAuth in [den OAuth-Einstellungen](https://dashboard.stripe.com/settings/connect/onboarding-options/oauth). - Kopieren Sie Ihre `client_id`, eine eindeutige Kennung für Ihre Plattform, die von Stripe generiert wird. - Legen Sie Ihre `redirect_uri` fest, also die URL, auf die Ihr/e Nutzer/in nach der Verknüpfung ihres/seines Kontos weitergeleitet wird. Sie müssen alle Weiterleitungs-URLs in Ihren Plattformeinstellungen angeben. Wenn Sie den Parameter `redirect_uri` in Ihrer Anfrage nicht angeben, verwendet Stripe standardmäßig die erste Adresse, die Sie in Ihren Plattformeinstellungen konfiguriert haben. Stripe bietet auch eine [client_id](https://dashboard.stripe.com/test/settings/connect/onboarding-options/oauth), um beim [Testen](https://docs.stripe.com/connect/testing.md#using-oauth) zu helfen. Jede `client_id` ist entweder eine Live- oder eine Test-ID. Verwenden Sie eine Sandbox-`client_id`, um eine Verbindung zu einem Sandbox-Konto herzustellen. Mit diesen Informationen können Sie nun den OAuth-Link erstellen. Wir empfehlen, die Schaltfläche **Mit Stripe verbinden** anzuzeigen, die Nutzer/innen an den `authorize_url`-Endpoint sendet: ```url https://connect.stripe.com/oauth/authorize?response_type=code&client_id=ca_FkyHCg7X8mlvCUdMDao4mMxagUfhIwXb&scope=read_write ``` Der Stripe-Endpoint sollte mindestens diese drei Parameter empfangen: 1. `response_type`, mit einem Wert von **code** 1. Ihre `client_id` 1. `scope` mit einem Wert von **read\_write** Der Parameter `scope` bestimmt, was Ihre Plattform im Auftrag des verbundenen Kontos tun kann, wobei standardmäßig **read\_only** eingestellt ist. Um CSRF-Angriffe zu verhindern, fügen Sie den Parameter `state` hinzu und übergeben Sie ein einmaliges Token als Wert. Wir nehmen diesen `state`-Wert auf und senden den/die Nutzer/in zurück auf Ihre Seite. Ihre Seite sollte dann bestätigen, dass der `state`-Parameter nicht geändert wurde. So können Sie Ihrem/Ihrer Nutzer/in die Beispiel-URL zusammen mit unserer [Verbinden mit Stripe-Schaltfläche](https://d37ugbyn3rpeym.cloudfront.net/docs/connect/Connect-with-Stripe-button.zip) präsentieren, um den Verbindungsaufbau zu starten: ### Onboarding mithilfe von OAuth-Parametern anpassen Sie können das Verhalten des Onboarding-Vorgangs ändern, indem Sie zusätzliche URL-Parameter in Ihrem OAuth-Link einfügen. Eine vollständige Liste verfügbarer Parameter finden Sie in der [OAuth-Referenz](https://docs.stripe.com/connect/oauth-reference.md). ## Nutzer/in erstellt sein/ihr Konto Nachdem der/die Nutzer/in den Link auf Ihrer Seite anklickt, wird er/sie zur Website von Stripe geleitet. Dort wird er/sie aufgefordert, die Verbindung zu Ihrer Plattform zu genehmigen oder abzulehnen. Die Erstellung eines Stripe-Kontos ist in unseren Autorisierungsprozess integriert. Sie müssen sich keine Gedanken darüber machen, ob Ihre Nutzer/innen bereits Konten haben oder nicht. ![](https://b.stripecdn.com/docs-statics-srv/assets/oauth-select-account.536d5cf58d244be2ff9723b78c4817e8.png) Der/die Nutzer/in ist angemeldet und kann ein Konto auswählen, das direkt mit Ihrer Plattform verbunden wird. ![](https://b.stripecdn.com/docs-statics-srv/assets/oauth-register.fa953a975b7eb6112dddf8faaff24f67.png) Der/die Nutzer/in muss ein Konto erstellen. ## Nutzer/in wird auf Ihre Seite zurückgeleitet Nachdem ein/e Nutzer/in sein/ihr neu erstelltes Konto mit Ihrer Plattform verbunden hat, wird er/sie zu Ihrer Website zurückgeleitet, und zwar zu der als `redirect_uri` Ihrer Plattform eingerichteten URL. Bei erfolgreicher Verbindung werden folgende Werte in der URL übergeben: - Der zugestandene `scope` - Der Wert `state`, falls angegeben - Ein Autorisierungs-Code. Der Autorisierungs-Code gilt nur kurze Zeit und kann in der im nächsten Schritt beschriebenen POST-Anfrage nur einmalig verwendet werden. ```url https://connect.stripe.com/connect/default/oauth/test?scope=read_write&code={AUTHORIZATION_CODE} ``` Wenn der/die Nutzer/in die Autorisierung verweigert hat, wird er/sie trotzdem auf Ihre Website zurückgeleitet, aber die URL enthält statt des Autorisierungscodes einen Fehler. ```url https://connect.stripe.com/connect/default/oauth/test?error=access_denied&error_description=The%20user%20denied%20your%20request ``` ## Die Plattform schließt die Verbindung des Kontos ab Fügen Sie den angegebenen Autorisierungs-`code` in einer POST-Anfrage an den Token-Endpoint von Stripe ein, um die Verbindung abzuschließen und die Konto-ID des Nutzers/der Nutzerin abzurufen: #### curl ```bash curl https://connect.stripe.com/oauth/token \ -u <>: \ -d "code"="ac_123456789" \ -d "grant_type"="authorization_code" ``` Beachten Sie, dass Sie diese Anfrage mit Ihrem geheimen Live- oder Test-API-Schlüssel stellen, je nachdem, ob Sie einen Live- oder Test-Zugriffs-Token zurückerhalten möchten. Stripe gibt eine Antwort zurück, die die Konto-ID (`stripe_user_id`) für den/die Nutzer/in enthält. ```json { "token_type": "bearer", "scope": "read_write", "livemode": false, "stripe_user_id": ""{{CONNECTED_ACCOUNT_ID}}"", } ``` Falls ein Problem auftritt, wird stattdessen eine Fehlermeldung zurückgegeben: ```json { "error": "invalid_grant", "error_description": "Authorization code does not exist: {AUTHORIZATION_CODE}" } ``` Fertig! Der/die Nutzer/in ist jetzt mit Ihrer Plattform verbunden. Speichern Sie die `stripe_user_id` in Ihrer Datenbank. Dies ist die Stripe-Konto-ID für das neue Konto. Verwenden Sie diesen Wert für die [Authentifizierung](https://docs.stripe.com/connect/authentication.md) als das verbundene Konto, indem Sie ihn an die Anfragen im `Stripe-Account`-Header übergeben. Sie sollten erwägen, in Ihrem Anmeldeformular eine spezielle OAuth-Client-Bibliothek zu verwenden, um diese Schritte zu vereinfachen. Eine OAuth-Bibliothek für Ihre Sprache oder Ihr Framework finden Sie in der [Liste der Client-Bibliotheken](https://oauth.net/code/) auf der OAuth-Website. Mit dem `refresh_token` können Sie [Test-Zugriffs-Token](https://docs.stripe.com/connect/testing.md#creating-accounts) für eine `client_id` in Produktion erstellen oder Ihren Zugriffs-Token zu rollieren. Auch diesen Wert sollten Sie beibehalten, da Sie ihn erst nach dieser ersten POST-Anfrage abrufen können. > **Speichern Sie die erhaltene Konto-ID.** Plattformen benötigen diese Informationen, um Anfragen im Auftrag des Nutzers/der Nutzerin durchzuführen. ## Widerruf und Entzug des Zugriffs Das [Ereignis](https://docs.stripe.com/api.md#list_events) `account.application.deauthorized` tritt auf, wenn ein/e Nutzer/in Ihre Plattform von seinem/ihrem Konto trennt. Durch Beobachten dieses Ereignisses über [Webhooks](https://docs.stripe.com/connect/webhooks.md) können Sie alle erforderlichen Cleanups Ihrer Server durchführen. Um die Verbindung eines Kontos mit Zugriff auf das Stripe-Dashboard von Ihrer Plattform zu trennen, übergeben Sie Ihre `client_id` und die ID des verbundenen Kontos per POST an `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 ``` Sie können die API im Auftrag Ihres Nutzers/Ihrer Nutzerin verwenden, um Zahlungen anzunehmen, eine wiederkehrende Abrechnung einzurichten, Kontodaten abzurufen usw. ## See also - [Authentifizierung](https://docs.stripe.com/connect/authentication.md) - [Referenz für OAuth](https://docs.stripe.com/connect/oauth-reference.md) - [Vollständige API-Dokumentation](https://docs.stripe.com/api.md)