Zugriffstoken abrufen

Dieser Leitfaden erklärt, wie du das Autorisierungsfenster verwenden kannst, um Berechtigungen von Threads-Nutzer*innen für kurzlebige Thread-Nutzer*innen-Zugriffstoken abzurufen.

Schritt 1: Autorisierung anfordern

Im Autorisierungsfenster können App-Nutzer*innen deiner App Berechtigungen und kurzlebige Thread-Nutzer*innen-Zugriffstoken erteilen. Nachdem sich eine Person angemeldet und ausgewählt hat, auf welche Daten deine App zugreifen darf, leiten wir sie zu deiner App weiter und fügen einen Autorisierungscode hinzu, den du dann gegen ein kurzlebiges Zugriffstoken tauschen kannst.

Um mit dem Vorgang zu beginnen, rufe das Autorisierungsfenster ab und präsentiere es dem*r Nutzer*in:

https://threads.net/oauth/authorize
  ?client_id=<THREADS_APP_ID>
  &redirect_uri=<REDIRECT_URI>
  &scope=<SCOPE>
  &response_type=code
  &state=<STATE> // Optional

Wenn du das Autorisierungsfenster auf einem mobilen Android-Betriebssystem aufrufst, musst du sicherstellen, dass die URL in der nativen Webansicht oder einem Browser und nicht in der nativen App geöffnet wird.

Dies lässt sich beispielsweise mit dem folgenden JavaScript erreichen:

window.open(url, '_system');`

Parameter

Hinweis: Alle Parameter mit Ausnahme von state sind obligatorisch.

NameBeschreibung

client_id

Numerischer String

Erforderlich.
Deine Threads-App-ID aus dem Feld App-Dashboard > App-Einstellungen > Allgemeines > App-ID von Threads.
Beispiel:990602627938098

redirect_uri

String

Erforderlich.
Ein URI, an den wir die Person weiterleiten, nachdem sie die Berechtigungsanfrage zugelassen oder abgelehnt hat. Dieser Wert muss exakt mit einer der Basis-URIs aus deiner Liste der gültigen OAuth-URIs übereinstimmen. Beachte, dass deinen URIs im App-Dashboard möglicherweise am Ende ein Schrägstrich hinzugefügt wurde. Daher wird empfohlen, die Liste zu überprüfen.
Beispiel: https://socialsizzle.herokuapp.com/auth/

response_type

String

Erforderlich.
Lege diesen Wert auf code fest.

scope

Komma- oder leerzeichengetrennte Liste

Erforderlich.
Eine kommagetrennte oder URL-codierte und leerzeichengetrennte Liste der Berechtigungen, die vom*von der App-Nutzer*in angefordert werden sollen.
Hinweis:threads_basic ist erforderlich.
Werte:threads_basic, threads_content_publish, threads_read_replies, threads_manage_replies, threads_manage_insights

state

String

Ein optionaler Wert, der einen serverspezifischen Zustand angibt. Du kannst damit z. B. CSRF-Schutz gewährleisten. Wir fügen diesen Parameter und den Wert hinzu, wenn wir die Person zurück zu dir umleiten.
Beispiel:1

Beispiel-URL für das Autorisierungsfenster

https://threads.net/oauth/authorize
  ?client_id=990602627938098
  &redirect_uri=https://socialsizzle.herokuapp.com/auth/
  &scope=threads_basic,threads_content_publish
  &response_type=code

Erfolgreiche Autorisierung

Nach erfolgreicher Autorisierung leiten wir die Person an deinen redirect_uri weiter und übergeben dir einen Autorisierungscode im „code“-Abfrage-String-Parameter. Notiere den Code, damit deine App ihn gegen ein kurzlebiges Threads-Benutzer-Zugriffstoken tauschen kann.

Autorisierungscodes sind 1 Stunde lang gültig und können nur einmal verwendet werden.

Beispiel für eine erfolgreiche Autorisierungsweiterleitung

https://socialsizzle.herokuapp.com/auth/?code=AQBx-hBsH3...#_

Hinweis:#_ wird am Ende des Weiterleitungs-URI angehängt, gehört aber nicht zum eigentlichen Code und muss daher entfernt werden.

Abgebrochene Autorisierung

Wenn die Person den Autorisierungsvorgang abbricht, leiten wir sie an deinen redirect_uri weiter und hängen die folgenden Fehlerparameter an.

Hinweis: Du bist dafür zuständig, deinen Nutzer*innen in diesen Fällen eine passende Meldung anzuzeigen.

FehlerparameterBeschreibung

error

acceess_denied

error_reason

user_denied

error_description

The+user+denied+your+request

Beispiel für eine abgebrochene Autorisierungsweiterleitung

https://socialsizzle.herokuapp.com/auth/?error=access_denied
  &error_reason=user_denied
  &error_description=The+user+denied+your+request

Schritt 2: Code gegen Schlüssel tauschen

Nachdem du einen Code erhalten hast, musst du ihn gegen ein kurzlebiges Zugriffstoken tauschen, indem du eine POST-Anfrage an den folgenden Endpunkt sendest:

POST https://graph.threads.net/oauth/access_token

Parameter

Dein POST-Anfragetext muss die folgenden Parameter enthalten.

NameBeschreibung

client_id

Numerischer String

Erforderlich.
Deine Threads-App-ID aus dem Feld App-Dashboard > App-Einstellungen > Allgemeines > App-ID von Threads.
Beispiel:990602627938098

client_secret

String

Erforderlich.
Dein Threads-App-Geheimcode aus dem Feld App-Dashboard > App-Einstellungen > Allgemeines > App-Geheimcode von Threads.
Beispiel:a1b2C3D4

code

String

Erforderlich.
Der Autorisierungscode, den wir dir im code-Parameter übergeben haben, als wir die Person an deinen redirect_uri weitergeleitet haben.
Beispiel:AQBx-hBsH3...

grant_type

String

Erforderlich.
Lege diesen Wert auf authorization_code fest.

redirect_uri

String

Erforderlich.
Der Weiterleitungs-URI, den du bei der Weiterleitung der Person an unser Autorisierungsfenster übermittelt hast. Dabei muss es sich um den gleichen URI handeln, damit die Anfrage nicht abgelehnt wird.
Beispiel: https://socialsizzle.heroku.com/auth/

Beispielanfrage

curl -X POST \
  https://graph.threads.net/oauth/access_token \
  -F client_id=990602627938098 \
  -F client_secret=eb8c7... \
  -F grant_type=authorization_code \
  -F redirect_uri=https://socialsizzle.herokuapp.com/auth/ \
  -F code=AQBx-hBsH3...

Beispiel für eine erfolgreiche Antwort

War der Vorgang erfolgreich, gibt die API eine JSON-Payload mit dem kurzlebigen Zugriffsschlüssel und der Nutzer-ID des App-Benutzers zurück.

{
  "access_token": "THQVJ...",
  "user_id": 17841405793187218
}

Notiere den access_token-Wert. Dieser Wert enthält das kurzlebige Threads-Nutzer*innen-Zugriffstoken, mit dem deine App auf Threads API-Endpunkte zugreifen kann.

Beispiel für eine abgelehnte Antwort

Bei einer ungültigen Anfrage gibt die API einen Fehler zurück.

{
  "error_type": "OAuthException",
  "code": 400,
  "error_message": "Matching code was not found or was already used"
}