Zum Hauptinhalt springen

Abrufen von Access Tokens mit dem 3-legged OAuth-Flow

Um Aktionen im Namen einer anderen Person auszuführen, müssen Sie deren Access Tokens abrufen. Access Tokens geben das X Konto an, in dessen Namen die Anfrage gestellt wird. Damit Sie diese erhalten können, muss die Person Ihnen zunächst Zugriff gewähren. Diese Tokens laufen nicht ab, können jedoch jederzeit vom Nutzenden widerrufen werden. X ermöglicht es Ihnen, Benutzer-Access Tokens über den 3-legged OAuth-Flow zu erhalten. Dabei kann Ihre Anwendung ein access token und ein Access-Token-Secret erhalten, indem ein Nutzer zu X umgeleitet wird und Ihre Anwendung autorisiert. Dieser Flow ist nahezu identisch mit dem in Implementing Log in with X beschriebenen Ablauf, mit zwei Ausnahmen:
  • Das GET oauth/authorize endpoint wird anstelle von GET oauth/authenticate verwendet.
  • Der Nutzer wird immer aufgefordert, den Zugriff auf Ihre Anwendung zu autorisieren, selbst wenn der Zugriff zuvor bereits gewährt wurde.  
Bevor Sie beginnen, prüfen Sie die Berechtigungen Ihrer App und halten Sie die Consumer Keys sowie die Callback-URL bereit. Wenn Sie keine Callback-URL oder öffentlich zugängliche UI haben, sollten Sie die PIN-based authorization in Betracht ziehen. Diese ist für Anwendungen gedacht, die keinen Webbrowser aufrufen oder einbetten können, um den Nutzer nach der Autorisierung weiterzuleiten.  Die möglichen Zustände für die 3-legged-Anmeldung sind im folgenden Flussdiagramm dargestellt:

Überblick über den Prozess

Auf hoher Ebene umfasst der 3‑Legged‑OAuth‑Prozess:
  1. Eine Anforderung erstellen, damit eine Consumer‑Anwendung ein Request Token erhält.
  2. Den Benutzer authentifizieren lassen und der Consumer‑Anwendung ein Request Token senden.
  3. Das Request Token in ein verwendbares Benutzer‑access token umwandeln.
Begriffsklärung Im folgenden Leitfaden können unterschiedliche Begriffe für dasselbe verwendet werden. Client‑Anmeldedaten:
  • App Key === API Key === Consumer API Key === Consumer Key === Customer Key === oauth_consumer_key
  • App Key Secret === API Secret Key === Consumer Secret === Consumer Key === Customer Key === oauth_consumer_secret
  • Callback‑URL === oauth_callback  
Temporäre Anmeldedaten:
  • Request Token === oauth_token
  • Request Token Secret === oauth_token_secret
  • oauth_verifier  
Token‑Anmeldedaten:
  • Access token === Token === resultierendes oauth_token
  • Access token secret === Token Secret === resultierendes oauth_token_secret

Schritt-für-Schritt-Anleitung

Schritt 1: POST oauth/request_token Erstellen Sie eine Anfrage, damit eine Consumer-Anwendung ein Request-Token erhält. Der einzige eindeutige Parameter in dieser Anfrage ist oauth_callback. Er muss eine URL-kodierte Version der URL sein, zu der Ihre Nutzer nach Abschluss von Schritt 2 weitergeleitet werden sollen. Die übrigen Parameter werden durch den OAuth-Signaturprozess hinzugefügt. Bitte beachten: Jede Callback-URL, die Sie mit dem POST oauth/request_token-Endpoint verwenden, muss in den Einstellungen Ihrer Developer-App auf der App-Detailseite des Entwicklerportals konfiguriert werden.   Anfrage enthält: oauth_callback="https%3A%2F%2FyourCallbackUrl.com" oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w"  Ihre App sollte den HTTP-Status der Antwort prüfen. Jeder Wert ungleich 200 weist auf einen Fehler hin. Der Antworttext enthält die Parameter oauth_token, oauth_token_secret und oauth_callback_confirmed. Ihre App sollte prüfen, dass oauth_callback_confirmed true ist, und die beiden anderen Werte für die nächsten Schritte speichern.   Antwort enthält oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 oauth_token_secret=veNRnAWe6inFuo8o2u8SLLZLjolYDmDP7SzL0YfYI oauth_callback_confirmed=true Schritt 2: GET oauth/authorize Lassen Sie den Nutzer sich authentifizieren und der Consumer-Anwendung ein Request-Token übermitteln.   Beispiel-URL zur Weiterleitung des Nutzers: https://api.x.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 Nach erfolgreicher Authentifizierung erhält Ihre callback_url eine Anfrage mit den Parametern oauth_token und oauth_verifier. Ihre Anwendung sollte prüfen, ob das Token mit dem in Schritt 1 erhaltenen Request-Token übereinstimmt.   Anfrage aus dem Redirect des Clients: https://yourCallbackUrl.com?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0&oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY Schritt 3: POST oauth/access_token Wandeln Sie das Request-Token in ein nutzbares access token um. Damit aus dem Request-Token ein nutzbares access token wird, muss Ihre Anwendung eine Anfrage an das POST oauth/access_token-Endpoint senden, die den in Schritt 2 erhaltenen Wert oauth_verifier enthält. Das Request-Token wird außerdem im oauth_token-Teil des Headers übermittelt; dies wurde jedoch durch den Signaturprozess hinzugefügt.   Anfrage enthält: POST /oauth/access_token oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY Eine erfolgreiche Antwort enthält die Parameter oauth_token, oauth_token_secret. Token und Token-Secret sollten gespeichert und für zukünftige authentifizierte Anfragen an die X API verwendet werden. Um die Identität des Nutzers zu bestimmen, verwenden Sie GET account/verify_credentials.   Antwort enthält: oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4 oauth_token_secret=PbKfYqSryyeKDWz4ebtY3o5ogNLG11WJuZBc9fQrQo Verwendung dieser Anmeldedaten für OAuth 1.0a (Application-User) erforderliche Anfragen Jetzt haben Sie die Nutzer-Access Tokens erhalten; Sie können sie verwenden, um auf bestimmte APIs zuzugreifen, z. B. POST statuses/update, um Tweets im Namen der Nutzer zu erstellen.   Request includes: POST statuses/update.json oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4

Beispielanwendungsfall

Der Standardablauf ist webbasiert und nutzt den OAuth-Autorisierungsflow mit drei Beteiligten (3-legged OAuth). Die hier gezeigten Screenshots stammen aus einem Beispiel, dessen Quellcode Sie unter https://github.com/xdevplatform/twauth-web einsehen können. An einem bestimmten Punkt Ihrer Anwendung leiten Sie zu X weiter, um Ihre Anwendung zu autorisieren.
Wenn Sie mit dem Request-Token zu X weiterleiten, wird der Nutzer aufgefordert, Ihre Anwendung zu autorisieren.
Nach der Autorisierung Ihrer Anwendung wird der Nutzer zu der Callback-URL weitergeleitet, die Sie beim Erzeugen des Request-Tokens angegeben haben. Darüber erhalten Sie das permanente Access Token für diesen Nutzer und speichern es lokal.
I