# 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&nbsp;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.
2. Auf der Website von Stripe stellt der Nutzer/die Nutzerin die Informationen bereit, die erforderlich sind, um sich mit Ihrer Plattform zu [verbinden](https://docs.stripe.com/connect/oauth-standard-accounts.md#connect-users).
3. Der/die Nutzer/in wird zusammen mit einem Autorisierungscode auf Ihre Seite [umgeleitet](https://docs.stripe.com/connect/oauth-standard-accounts.md#redirected).
4. 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.&nbsp;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**
2. Ihre `client_id`
3. `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 Nutzer/die Nutzerin den Link auf Ihrer Seite anklickt, wird er/sie zur Website von Stripe weitergeleitet. Dort wird er/sie erneut 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 <<YOUR_SECRET_KEY>>: \
  -d "code"="ac_123456789" \
  -d "grant_type"="authorization_code"
```

Stellen Sie diese Anfrage mit Ihrem geheimen Live- oder Test-API-Schlüssel, 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 <<YOUR_SECRET_KEY>>: \
  -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)
