Dieses Dokument wurde aktualisiert.
Die Übersetzung ins Deutsche ist noch nicht fertig.
Englisch aktualisiert: 26.11.2021

Abrufen von Zugriffsschlüsseln und Berechtigungen

In diesem Leitfaden erfährst du, wie du das Autorisierungsfenster verwendest, um kurzlebigeInstagram-Benutzer-Zugriffsschlüssel und Berechtigungen von Instagram-Benutzern abzurufen.

Schritt 1: Autorisierung anfordern

Über das Autorisierungsfenster können App-Benutzer deiner App Berechtigungen und kurzlebigeInstagram-Benutzer-Zugriffsschlüssel gewähren. Nachdem sich ein Benutzer angemeldet und ausgewählt hat, auf welche Daten deine App zugreifen darf, leiten wir den Benutzer zu deiner App weiter und fügen einen Autorisierungscode hinzu, den du dann gegen einen kurzlebigen Zugriffsschlüssel tauschen kannst.

Um mit dem Vorgang zu beginnen, rufe das Autorisierungsfenster ab und präsentiere es dem Benutzer:

https://api.instagram.com/oauth/authorize
  ?client_id={instagram-app-id}
  &redirect_uri={redirect-uri}
  &scope={scope}
  &response_type=code
  &state={state}        //Optional

Abfrage-String-Parameter

Alle Parameter mit Ausnahme von state sind Pflichtparameter.

ParameterBeispielwertBeschreibung

client_id
Erforderlicher
numerischer String

990602627938098

Deine unter App-Dashboard > Produkte > Instagram > Basic Display angezeigte Instagram-App-ID.

redirect_uri
Erforderlicher
String

https://socialsizzle.herokuapp.com/auth/

Ein URI, an den wir die Benutzer weiterleiten, nachdem sie die Berechtigungsanfrage zugelassen oder abgelehnt haben. Stelle sicher, dass dieser genau mit einem der Basis-URIs in deiner Liste gültiger oAuth-URIs übereinstimmt. Beachte, dass zu deinen URIs im App-Dashboard möglicherweise am Ende ein Schrägstrich hinzugefügt wurde. Daher wird empfohlen, die Liste zu überprüfen.

response_type
Erforderlicher
String

code

Lege diesen Wert auf code fest.

scope
Erforderliche
durch Kommas oder Leerzeichen getrennte Liste

user_profile,user_media

Eine durch Kommas getrennte Liste bzw. eine URL-codierte Liste (mit Leerzeichen als Trennzeichen) mit Berechtigungen, die vom App-Benutzer angefordert werden müssen. user_profile ist erforderlich.

state
String

1

Ein optionaler Wert, der einen serverspezifischen Zustand angibt. Du kannst damit z. B. CSRF-Schutz gewährleisten. Wir fügen diesen Parameter und Wert hinzu, wenn der Benutzer zu dir zurückgeleitet wird.

Beispiel-URL für das Autorisierungsfenster

https://api.instagram.com/oauth/authorize
  ?client_id=990602627938098
  &redirect_uri=https://socialsizzle.herokuapp.com/auth/
  &scope=user_profile,user_media
  &response_type=code

Erfolgreiche Autorisierung

Wenn die Autorisierung erfolgreich ist, leiten wir den Benutzer an deinen redirect_uri weiter und übermitteln dir über den Abfrage-String-Parameter code einen Autorisierungscode. Notiere den Code, damit deine App ihn gegen einen kurzlebigen Instagram-Benutzer-Zugriffsschlüssel 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...#_

Beachte, dass #_ am Ende des Weiterleitungs-URI angehängt wird. Da es aber nicht Teil des eigentlichen Codes ist, muss es gelöscht werden.

Abgebrochene Autorisierung

Wenn der Benutzer den Autorisierungsvorgang abbricht, leiten wir ihn an deinen redirect_uri weiter und hängen die folgenden Fehlerparameter an. Es ist deine Aufgabe, deinen Benutzern in diesen Fällen eine geeignete Meldung anzuzeigen.

ParameterWert

error

access_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 einen kurzlebigen Zugriffsschlüssel tauschen, indem du eine POST-Anfrage an den folgenden Endpunkt sendest:

POST https://api.instagram.com/oauth/access_token

Textparameter

Nimm die folgenden Parameter in den Text der POST-Anfrage auf.

ParameterBeispielwertBeschreibung

client_id
Erforderlicher
numerischer String

990602627938098

Deine unter App-Dashboard > Produkte > Instagram > Basic Display angezeigte Instagram-App-ID.

client_secret
Erforderlicher
String

a1b2C3D4

Dein unter App-Dashboard > Produkte > Instagram > Basic Display angezeigter Instagram-App-Geheimcode.

code
Erforderlicher
String

AQBx-hBsH3...

Der Autorisierungscode, den wir dir im code-Parameter übergeben haben, als wir den Benutzer an deinen redirect_uri weitergeleitet haben.

grant_type
Erforderlicher
String

authorization_code

Lege diesen Wert auf authorization_code fest.

redirect_uri
Erforderlicher
String

https://socialsizzle. heroku.com/auth/

Der Weiterleitungs-URI, den du bei der Weiterleitung des Benutzers an unser Autorisierungsfenster übermittelt hast. Dabei muss es sich um den gleichen URI handeln, damit die Anfrage nicht abgelehnt wird.

Beispielanfrage

curl -X POST \
  https://api.instagram.com/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": "IGQVJ...",
  "user_id": 17841405793187218
}

Notiere den access_token-Wert. Dies ist der kurzlebige Instagram-Benutzer-Zugriffsschlüssel des Benutzers, den deine App verwenden kann, um auf die Endpunkte der Instagram Basic Display API zuzugreifen.

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"
}