Informationen zu Benutzerzugriffstoken
Note
Ablaufende Benutzerzugriffstoken sind derzeit ein optionales Feature, das noch geändert werden kann. Informationen zum Aktivieren oder Deaktivieren des Tokenablauffeatures findest du unter Aktivieren optionaler Features für GitHub-Apps. Weitere Informationen findest du unter Ablauf von Benutzer-zu-Server-Zugriffstoken für GitHub Apps.
Wenn eine Benutzerin meldet, dass nach der Autorisierung deiner GitHub App keine Ressourcen im Besitz seiner bzw. ihrer Organisation angezeigt werden können und die Organisation SAML-SSO verwendet, weise dendie Benutzerin an, vor der erneuten Autorisierung eine aktive SAML-Sitzung für die Organisation zu starten. Weitere Informationen findest du unter SAML- und GitHub-Apps.
Dieser Artikel enthält Befehle oder Beispiele, die die github.com
-Domäne verwenden. Du kannst in einer anderen Domäne auf GitHub zugreifen, z. B. octocorp.ghe.com
.
Ein Benutzerzugriffstoken ist ein OAuth-Tokentyp. Im Gegensatz zu herkömmlichen OAuth-Token verwendet das Benutzerzugriffstoken keine Bereiche. Stattdessen werden differenzierte Berechtigungen verwendet. Ein Benutzerzugriffstoken verfügt nur über Berechtigungen, die sowohl die Benutzerinnen als auch die App besitzen. Wenn der App beispielsweise die Berechtigung zum Schreiben des Inhalts eines Repositorys erteilt wurde, die Benutzerinnen jedoch nur den Inhalt lesen können, erhält das Benutzerzugriffstoken nur die Berechtigung zum Lesen des Inhalts.
Ebenso kann ein Benutzerzugriffstoken nur auf Ressourcen zugreifen, auf die sowohl die Benutzerinnen als auch die App zugreifen können. Wenn beispielsweise einer App Zugriff auf die Repositorys A
und B
gewährt wurde und die Benutzerinnen Zugriff auf die Repositorys B
und C
haben, kann das Benutzerzugriffstoken auf das Repository B
zugreifen, aber nicht auf A
oder C
. Du kannst mithilfe der REST-API überprüfen, auf welche Installationen und welche Repositorys innerhalb einer Installation ein Benutzerzugriffstoken zugreifen kann. Weitere Informationen findest du unter GET /user/installations
und GET /user/installations/{installation_id}/repositories
unter Rest-API-Endpunkte für GitHub App-Installationen.
Wenn du API-Anforderungen mit einem Benutzerzugriffstoken stellen, gelten die Ratenlimits für Benutzerzugriffstoken. Weitere Informationen findest du unter Rate limits for GitHub Apps (Ratenbegrenzungen für GitHub-Apps).
Standardmäßig läuft ein Benutzerzugriffstoken nach 8 Stunden ab. Du kannst ein Aktualisierungstoken verwenden, um ein Benutzerzugriffstoken erneut zu generieren. Weitere Informationen findest du unter Aktualisieren von Benutzerzugriffstoken.
Benutzerinnen können die Autorisierung einer GitHub App widerrufen. Weitere Informationen findest du unter Tokenablauf und Sperrung. Wenn Benutzerinnen die Autorisierung einer GitHub App widerrufen, erhält die App den Webhook github_app_authorization
. GitHub Apps können dieses Ereignis nicht abbestellen. Wenn deine App diesen Webhook empfängt, solltest du den Aufruf der API im Namen der Benutzer*innen beenden, die das Token widerrufen haben. Wenn deine App ein widerrufenes Zugriffstoken weiterhin verwendet, erhält sie den Fehler 401 Bad Credentials
. Weitere Informationen zu diesem Webhook findest du unter Webhook-Ereignisse und -Nutzlasten.
Du musst Benutzerzugriffstoken und Aktualisierungstoken sicher aufbewahren. Weitere Informationen findest du unter Best Practices beim Erstellen einer GitHub-App.
Verwenden des Webanwendungsflusses zum Generieren eines Benutzerzugriffstokens
Wenn deine App im Browser ausgeführt wird, solltest du den Webanwendungsfluss verwenden, um ein Benutzerzugriffstoken zu generieren. Ein Tutorial zur Verwendung des Webanwendungsflusses findest du unter Erstellen der Schaltfläche „Mit GitHub anmelden“ mit einer GitHub-App.
-
Leite die Benutzer*innen an diese URL weiter, und füge alle erforderlichen Abfrageparameter aus der folgenden Liste von Parametern hinzu:
https://github.com/login/oauth/authorize
. Diese URL gibt beispielsweise die Parameterclient_id
undstate
an:https://github.com/login/oauth/authorize?client_id=12345&state=abcdefg
.Query parameter (Abfrageparameter) type Erforderlich? Beschreibung client_id
string
Erforderlich Die Client-ID für deine GitHub App. Die Client-ID unterscheidet sich von der App-ID. Du findest die Client-ID auf der Einstellungsseite deiner App. Weitere Informationen zum Aufrufen der Einstellungsseite für deine GitHub App findest du unter Ändern einer GitHub-App-Registrierung. redirect_uri
string
Dringend empfohlen Die URL in der Anwendung, an die Benutzer nach der Autorisierung gesendet werden. Sie muss genau mit einer der URLs übereinstimmen, die du als „Rückruf-URL“ in den Einstellungen deiner App angegeben hast, und sie darf keine zusätzlichen Parameter enthalten. state
string
Dringend empfohlen Bei der Angabe sollte zum Schutz vor Fälschungsangriffen eine zufällige Zeichenfolge eingefügt werden. Sie kann auch andere beliebige Daten enthalten. login
string
Optional Wenn eine Angabe erfolgt, übergibt der Webanwendungsfluss Benutzer*innen ein bestimmtes Konto, das sie für die Anmeldung und Autorisierung deiner App verwenden können. allow_signup
boolean
Optional Gibt an, ob nicht authentifizierten Benutzer*innen während des OAuth-Flusses eine Option zum Registrieren bei GitHub angeboten wird. Der Standardwert lautet true
. Verwendefalse
, wenn eine Richtlinie die Anmeldung verbietet.prompt
string
Optional Erzwingt die Anzeige der Kontoauswahl, wenn auf select_account
eingestellt. Die Kontoauswahl wird auch angezeigt, wenn die Anwendung über einen Nicht-HTTP-Umleitungs-URI verfügt oder wenn Sie bei mehreren Konten angemeldet sind. -
Wenn die Benutzer*innen deine Autorisierungsanforderung akzeptieren, leitet GitHub sie zu einer der Rückruf-URLs in deinen App-Einstellungen um und stellt einen
code
-Abfrageparameter bereit, mit dem du im nächsten Schritt ein Benutzerzugriffstoken erstellen kannst. Wenn du im vorherigen Schrittredirect_uri
angegeben hast, wird diese Rückruf-URL verwendet. Andernfalls wird die erste Rückruf-URL auf der Einstellungsseite deiner App verwendet.Wenn du im vorherigen Schritt den
state
-Parameter angegeben hast, enthält GitHub auch einenstate
-Parameter. Wenn derstate
-Parameter nicht mit demstate
-Parameter übereinstimmt, den du im vorherigen Schritt übermittelt hast, kann die Anforderung nicht als vertrauenswürdig gelten, und der Webanwendungsfluss sollte abgebrochen werden. -
Tausche das
code
-Element aus dem vorherigen Schritt gegen ein Benutzerzugriffstoken aus, indem du einePOST
-Anforderung an diese URL sendest und dabei folgende Abfrageparameter angibst:https://github.com/login/oauth/access_token
Query parameter (Abfrageparameter) type BESCHREIBUNG client_id
string
Erforderlich. Die Client-ID für deine GitHub App. Die Client-ID unterscheidet sich von der App-ID. Du findest die Client-ID auf der Einstellungsseite deiner App. Weitere Informationen zum Aufrufen der Einstellungsseite für deine GitHub App findest du unter Ändern einer GitHub-App-Registrierung. client_secret
string
Erforderlich. Der geheime Clientschlüssel für deine GitHub App. Du kannst einen geheimen Clientschlüssel auf der Einstellungsseite für deine App generieren. code
string
Erforderlich. Der Code, den du im vorherigen Schritt erhalten hast. redirect_uri
string
Die URL in der Anwendung, an die Benutzer nach der Autorisierung gesendet werden. Diese muss genau mit einer der URLs übereinstimmen, die du beim Einrichten deiner GitHub App als „Rückruf-URL“ angegeben hast. Sie darf keine zusätzlichen Parameter enthalten. repository_id
string
Die ID eines einzelnen Repositorys, auf das das Benutzerzugriffstoken zugreifen kann. Wenn die GitHub App oder dieder Benutzerin nicht auf das Repository zugreifen kann, wird dies ignoriert. Verwende diesen Parameter, um den Zugriff auf das Benutzerzugriffstoken weiter einzuschränken. -
GitHub gibt eine Antwort, die folgende Parameter enthält:
Antwortparameter type Beschreibung access_token
string
Das Benutzerzugriffstoken. Das Token beginnt mit ghu_
.expires_in
integer
Die Anzahl der Sekunden bis zum Ablauf des access_token
. Wenn du den Ablauf von Benutzerzugriffstoken deaktiviert hast, wird dieser Parameter ausgelassen. Der Wert ist immer28800
(8 Stunden).refresh_token
string
Das Aktualisierungstoken. Wenn du den Ablauf von Benutzerzugriffstoken deaktiviert hast, wird dieser Parameter ausgelassen. Das Token beginnt mit ghr_
.refresh_token_expires_in
integer
Die Anzahl der Sekunden bis zum Ablauf des refresh_token
. Wenn du den Ablauf von Benutzerzugriffstoken deaktiviert hast, wird dieser Parameter ausgelassen. Der Wert ist immer15897600
(6 Monate).scope
string
Die Bereiche für das Token. Dieser Wert ist immer eine leere Zeichenfolge. Im Gegensatz zu einem herkömmlichen OAuth-Token ist das Benutzerzugriffstoken auf die Berechtigungen beschränkt, die sowohl deiner App als auch den Benutzer*innen zugewiesen wurden. token_type
string
Der Tokentyp. Der Wert ist immer bearer
. -
Verwende das Benutzerzugriffstoken aus dem vorherigen Schritt, um API-Anforderungen im Namen von Benutzer*innen auszuführen. Schließe das Benutzerzugriffstoken in den
Authorization
-Header einer API-Anforderung ein. Zum Beispiel:curl --request GET \ --url "https://api.github.com/user" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer USER_ACCESS_TOKEN" \ --header "X-GitHub-Api-Version: 2022-11-28"
Verwenden des Geräteflusses zum Generieren eines Benutzerzugriffstokens
Note
Der Gerätefluss befindet sich in public preview und kann geändert werden.
Wenn deine App monitorlos ist oder keinen Zugriff auf einen Browser hat, solltest du den Gerätefluss verwenden, um ein Benutzerzugriffstoken zu generieren. Beispielsweise sollten CLI-Tools, einfache Raspberry Pi-Geräte und Desktopanwendungen den Gerätefluss verwenden. Ein Tutorial zur Verwendung des Geräteflusses findest du unter Erstellen einer CLI mit einer GitHub-App.
Bevor Sie den Gerätefluss verwenden können, müssen Sie ihn zuerst in den Einstellungen Ihrer App aktivieren. Weitere Informationen zum Aktivieren des Geräteflusses findest du unter Ändern einer GitHub-App-Registrierung.
Im Gerätefluss wird die Erweiterung OAuth 2.0 Device Authorization Grant verwendet.
-
Sende eine
POST
-Anforderung zusammen mit einemclient_id
-Abfrageparameter anhttps://github.com/login/device/code
. Die Client-ID unterscheidet sich von der App-ID. Du findest die Client-ID auf der Einstellungsseite deiner App. Weitere Informationen zum Aufrufen der Einstellungsseite für deine GitHub App findest du unter Ändern einer GitHub-App-Registrierung. -
GitHub gibt eine Antwort, die die folgenden Abfrageparameter enthält:
Antwortparameter type Beschreibung device_code
string
Ein Prüfcode zum Überprüfen des Geräts. Dieser Code ist 40 Zeichen lang. user_code
string
Ein Prüfcode, den deine Anwendung anzeigen sollte, damit die Benutzer*innen ihn in einem Browser eingeben können. Dieser Code umfasst 8 Zeichen mit einem Bindestrich in der Mitte. Beispiel: WDJB-MJHT
.verification_uri
string
Die URL, unter die Benutzer*innen ihren user_code
eingeben müssen. Die URL lautet:https://github.com/login/device
.expires_in
integer
Die Anzahl der Sekunden, bevor device_code
unduser_code
ablaufen. Der Standardwert beträgt 900 Sekunden (15 Minuten).interval
integer
Die Zeit in Sekunden, die mindestens verstreichen muss, bevor du eine neue Zugriffstokenanforderung ( POST https://github.com/login/oauth/access_token
) vornehmen kannst, um die Geräteautorisierung abzuschließen. Wenn du vor Ablauf dieses Zeitraums eine Anforderung übermittelst, wird der Grenzwert für die Rate erreicht und einslow_down
-Fehler angezeigt. Die Standardeinstellung ist 5 Sekunden. -
Fordere die Benutzer*innen auf, den
user_code
aus dem vorherigen Schritt unterhttps://github.com/login/device
einzugeben.Wenn die Benutzer*innen den Code nicht vor Ablauf des
expires_in
-Zeitraums eingeben, wird der Code ungültig. In diesem Fall solltest du den Gerätefluss neu starten. -
Rufe
POST https://github.com/login/oauth/access_token
zusammen mit den Abfrageparameternclient_id
,device_code
undgrant_type
(unten beschrieben) ab, bis die Geräte- und Benutzercodes ablaufen oder die Benutzer*innen die App durch Eingabe desuser_code
erfolgreich autorisiert haben.Query parameter (Abfrageparameter) type BESCHREIBUNG client_id
string
Erforderlich. Die Client-ID für deine GitHub App device_code
string
Erforderlich. Der Geräteprüfcode, den du im vorherigen Schritt erhalten hast. grant_type
string
Erforderlich. Der Gewährungstyp muss urn:ietf:params:oauth:grant-type:device_code
sein.repository_id
string
Die ID eines einzelnen Repositorys, auf das das Benutzerzugriffstoken zugreifen kann. Wenn die GitHub App oder dieder Benutzerin nicht auf das Repository zugreifen kann, wird dies ignoriert. Verwende diesen Parameter, um den Zugriff auf das Benutzerzugriffstoken weiter einzuschränken. Rufe diesen Endpunkt nicht in kürzeren Abständen als durch
interval
angegeben ab. Andernfalls wird der Grenzwert für die Rate erreicht und einslow_down
-Fehler angezeigt. Dieslow_down
-Fehlerantwort fügt dem letzten Intervall (interval
) 5 Sekunden hinzu.Bis Benutzer*innen den Code eingeben, antwortet GitHub mit dem Status „200“ und dem Antwortabfrageparameter
error
.Fehlerbezeichnung BESCHREIBUNG authorization_pending
Dieser Fehler tritt auf, wenn die Autorisierungsanforderung aussteht und der Benutzer noch nicht den Benutzercode eingegeben hat. Von der App wird erwartet, dass sie POST https://github.com/login/oauth/access_token
weiterhin mit einer Häufigkeit abfragt, die nicht schneller als die durchinterval
angegebene Häufigkeit ist.slow_down
Wenn du den slow_down
-Fehler erhältst, werden 5 zusätzliche Sekunden dem Mindestintervall (interval
) oder -zeitrahmen hinzugefügt, das bzw. der zwischen deinen Anforderungen mitPOST https://github.com/login/oauth/access_token
erforderlich ist. Wenn beispielsweise für das Startintervall mindestens 5 Sekunden zwischen Anforderungen erforderlich waren und einslow_down
-Fehler angezeigt wird, musst du jetzt mindestens 10 Sekunden warten, bevor du eine neue Anforderung für ein Token vornimmst. Die Fehlerantwort enthält den neuen Wert fürinterval
, den du verwenden musst.expired_token
Wenn der Gerätecode abgelaufen ist, wird der token_expired
-Fehler angezeigt. Du musst eine neue Anforderung für einen Gerätecode vornehmen.unsupported_grant_type
Der Gewährungstyp muss urn:ietf:params:oauth:grant-type:device_code
sein und als Eingabeparameter enthalten sein, wenn Sie die OAuth-TokenanforderungPOST https://github.com/login/oauth/access_token
abfragen.incorrect_client_credentials
Für den Gerätefluss musst du die Client-ID deiner App übergeben, die du auf der Seite „Einstellungen“ deiner App findest. Die Client-ID unterscheidet sich von der App-ID und dem geheimen Clientschlüssel. incorrect_device_code
Der bereitgestellte device_code
ist ungültig.access_denied
Wenn Benutzerinnen während des Autorisierungsprozesses auf „Abbrechen“ klicken, wird ein access_denied
-Fehler angezeigt, und die Benutzerinnen können den Überprüfungscode nicht noch einmal verwenden.device_flow_disabled
Der Gerätefluss wurde in den Einstellungen der App nicht aktiviert. Weitere Informationen zum Aktivieren des Geräteflusses findest du unter Ändern einer GitHub-App-Registrierung. -
Nach der Eingabe des
user_code
durch die Benutzer*innen antwortet GitHub mit einer Antwort, die die folgenden Abfrageparameter enthält:Antwortparameter type Beschreibung access_token
string
Das Benutzerzugriffstoken. Das Token beginnt mit ghu_
.expires_in
integer
Die Anzahl der Sekunden bis zum Ablauf des access_token
. Wenn du den Ablauf von Benutzerzugriffstoken deaktiviert hast, wird dieser Parameter ausgelassen. Der Wert ist immer28800
(8 Stunden).refresh_token
string
Das Aktualisierungstoken. Wenn du den Ablauf von Benutzerzugriffstoken deaktiviert hast, wird dieser Parameter ausgelassen. Das Token beginnt mit ghr_
.refresh_token_expires_in
integer
Die Anzahl der Sekunden bis zum Ablauf des refresh_token
. Wenn du den Ablauf von Benutzerzugriffstoken deaktiviert hast, wird dieser Parameter ausgelassen. Der Wert ist immer15897600
(6 Monate).scope
string
Die Bereiche für das Token. Dieser Wert ist immer eine leere Zeichenfolge. Im Gegensatz zu einem herkömmlichen OAuth-Token ist das Benutzerzugriffstoken auf die Berechtigungen beschränkt, die sowohl deiner App als auch den Benutzer*innen zugewiesen wurden. token_type
string
Der Tokentyp. Der Wert ist immer bearer
. -
Verwende das Benutzerzugriffstoken aus dem vorherigen Schritt, um API-Anforderungen im Namen von Benutzer*innen auszuführen. Schließe das Benutzerzugriffstoken in den
Authorization
-Header einer API-Anforderung ein. Zum Beispiel:curl --request GET \ --url "https://api.github.com/user" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer USER_ACCESS_TOKEN" \ --header "X-GitHub-Api-Version: 2022-11-28"
Generieren eines Benutzerzugriffstokens, wenn Benutzer*innen deine App installieren
Wenn du in den App-Einstellungen Benutzerautorisierung während der Installation anfordern (OAuth) auswählst, startet GitHub den Webanwendungsfluss sofort, nachdem Benutzer*innen deine App installiert haben.
Du kannst mit dieser Methode ein Benutzerzugriffstoken generieren, unabhängig davon, ob die App unter einem Benutzerkonto oder einem Organisationskonto installiert ist. Wenn die App jedoch unter einem Organisationskonto installiert wurde, musst du den Webanwendungsfluss oder den Gerätefluss verwenden, um ein Benutzerzugriffstoken für andere Benutzer*innen in der Organisation zu generieren.
-
Wenn Benutzer*innen deine App installiert, leitet GitHub sie zu
https://github.com/login/oauth/authorize?client_id=CLIENT_ID
um, wobeiCLIENT_ID
die Client-ID deiner App ist. -
Wenn die Benutzer*innen deine Autorisierungsanforderung akzeptieren, leitet GitHub sie zur ersten Rückruf-URL in deinen App-Einstellungen um und stellt einen
code
-Abfrageparameter bereit.Wenn du festlegen möchtest, welche Rückruf-URL verwendet wird, wählst du Benutzerautorisierung während der Installation anfordern (OAuth) nicht aus. Führe die Benutzer*innen stattdessen durch den vollständigen Webanwendungsfluss, und gib den
redirect_uri
-Parameter an. -
Tausche das
code
-Element aus dem vorherigen Schritt gegen ein Benutzerzugriffstoken aus, indem du einePOST
-Anforderung an diese URL sendest und dabei folgende Abfrageparameter angibst:https://github.com/login/oauth/access_token
Query parameter (Abfrageparameter) type BESCHREIBUNG client_id
string
Erforderlich. Die Client-ID für deine GitHub App. Die Client-ID unterscheidet sich von der App-ID. Du findest die Client-ID auf der Einstellungsseite deiner App. Weitere Informationen zum Aufrufen der Einstellungsseite für deine GitHub App findest du unter Ändern einer GitHub-App-Registrierung. client_secret
string
Erforderlich. Der geheime Clientschlüssel für deine GitHub App. Du kannst einen geheimen Clientschlüssel auf der Einstellungsseite für deine App generieren. code
string
Erforderlich. Der Code, den du im vorherigen Schritt erhalten hast. redirect_uri
string
Die URL in der Anwendung, an die Benutzer nach der Autorisierung gesendet werden. Diese muss genau mit einer der URLs übereinstimmen, die du beim Einrichten deiner GitHub App als „Rückruf-URL“ angegeben hast. Sie darf keine zusätzlichen Parameter enthalten. repository_id
string
Die ID eines einzelnen Repositorys, auf das das Benutzerzugriffstoken zugreifen kann. Wenn die GitHub App oder dieder Benutzerin nicht auf das Repository zugreifen kann, wird dies ignoriert. Verwende diesen Parameter, um den Zugriff auf das Benutzerzugriffstoken weiter einzuschränken. -
GitHub gibt eine Antwort, die folgende Parameter enthält:
Antwortparameter type Beschreibung access_token
string
Das Benutzerzugriffstoken. Das Token beginnt mit ghu_
.expires_in
integer
Die Anzahl der Sekunden bis zum Ablauf des access_token
. Wenn du den Ablauf von Benutzerzugriffstoken deaktiviert hast, wird dieser Parameter ausgelassen. Der Wert ist immer28800
(8 Stunden).refresh_token
string
Das Aktualisierungstoken. Wenn du den Ablauf von Benutzerzugriffstoken deaktiviert hast, wird dieser Parameter ausgelassen. Das Token beginnt mit ghr_
.refresh_token_expires_in
integer
Die Anzahl der Sekunden bis zum Ablauf des refresh_token
. Wenn du den Ablauf von Benutzerzugriffstoken deaktiviert hast, wird dieser Parameter ausgelassen. Der Wert ist immer15897600
(6 Monate).scope
string
Die Bereiche für das Token. Dieser Wert ist immer eine leere Zeichenfolge. Im Gegensatz zu einem herkömmlichen OAuth-Token ist das Benutzerzugriffstoken auf die Berechtigungen beschränkt, die sowohl deiner App als auch den Benutzer*innen zugewiesen wurden. token_type
string
Der Tokentyp. Der Wert ist immer bearer
. -
Verwende das Benutzerzugriffstoken aus dem vorherigen Schritt, um API-Anforderungen im Namen von Benutzer*innen auszuführen. Schließe das Benutzerzugriffstoken in den
Authorization
-Header einer API-Anforderung ein. Zum Beispiel:curl --request GET \ --url "https://api.github.com/user" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer USER_ACCESS_TOKEN" \ --header "X-GitHub-Api-Version: 2022-11-28"
Verwenden eines Aktualisierungstokens zum Generieren eines Benutzerzugriffstokens
Standardmäßig laufen Benutzerzugriffstoken nach 8 Stunden ab. Wenn du ein Benutzerzugriffstoken mit einer Ablaufzeit empfängst, erhältst du auch ein Aktualisierungstoken. Das Aktualisierungstoken läuft nach 6 Monaten ab. Du kannst dieses Aktualisierungstoken verwenden, um ein Benutzerzugriffstoken erneut zu generieren. Weitere Informationen findest du unter Aktualisieren von Benutzerzugriffstoken.
GitHub empfiehlt dringend, ablaufende Benutzerzugriffstoken zu verwenden. Wenn du dich zuvor gegen die Verwendung von ablaufenden Benutzerzugriffstoken entschieden hast, aber dieses Feature nun aktivieren möchtest, findest du unter Aktivieren optionaler Features für GitHub-Apps weitere Informationen.
Problembehandlung
In den folgenden Abschnitten werden einige Fehler beschrieben, die beim Generieren eines Benutzerzugriffstokens auftreten können.
Falsche Clientanmeldeinformationen
Wenn die von dir angegebenen Werte für client_id
oder client_secret
falsch sind, wird der Fehler incorrect_client_credentials
angezeigt.
Um diesen Fehler zu beheben, stelle sicher, dass du die richtigen Anmeldeinformationen für deine GitHub App verwendest. Du findest die Client-ID und den geheimen Clientschlüssel auf der Einstellungsseite für deine GitHub App. Weitere Informationen zum Aufrufen der Einstellungsseite für deine GitHub App findest du unter Ändern einer GitHub-App-Registrierung.
Konflikt des Umleitungs-URIs
Wenn du einen Umleitungs-URI (redirect_uri
) angibst, der keiner der Rückruf-URLs in deiner GitHub App-Registrierung entspricht, wird der Fehler redirect_uri_mismatch
angezeigt.
Um diesen Fehler zu beheben, gib entweder einen Umleitungs-URI (redirect_uri
) an, der einer der Rückruf-URLs für deine GitHub App-Registrierung entspricht, oder lasse diesen Parameter aus, um standardmäßig die erste Rückruf-URL zu verwenden, die in deiner GitHub App-Registrierung aufgeführt ist. Weitere Informationen findest du unter Informationen zur Rückruf-URL für die Benutzerautorisierung.
Fehlerhafter Überprüfungscode
Wenn du den Gerätefluss verwendest und der von dir angegebene Überprüfungscode (device_code
) falsch oder abgelaufen ist oder nicht mit dem Wert übereinstimmt, den du von der anfänglichen Anforderung an https://github.com/login/device/code
erhalten hast, wird der Fehler bad_verification_code
angezeigt.
Um diesen Fehler zu beheben, musst du den Gerätefluss erneut starten, um einen neuen Code zu erhalten. Weitere Informationen findest du unter Verwenden des Geräteflusses zum Generieren eines Benutzerzugriffstokens.
Ungültiges Aktualisierungstoken
Wenn das von dir angegebene Aktualisierungstoken ungültig oder abgelaufen ist, wird der Fehler bad_refresh_token
angezeigt.
Um diesen Fehler zu beheben, musst du den Webanwendungsfluss oder den Gerätefluss neu starten, um ein neues Benutzerzugriffstoken und Aktualisierungstoken zu erhalten. Du erhältst nur dann ein Aktualisierungstoken, wenn für deine GitHub App der Ablauf von Benutzerzugriffstoken aktiviert wurde. Weitere Informationen findest du unter Aktualisieren von Benutzerzugriffstoken.
Nicht unterstützter Gewährungstyp
Wenn du ein Benutzerzugriffstoken über den Gerätefluss anforderst, muss der Parameter grant_type
auf urn:ietf:params:oauth:grant-type:device_code
festgelegt sein. Wenn du ein Benutzerzugriffstoken mithilfe eines Aktualisierungstoken aktualisierst, muss der Parameter grant_type
auf refresh_token
festgelegt sein. Wenn du nicht den richtigen Gewährungstyp verwendest, wird der Fehler unsupported_grant_type
angezeigt.
Nicht überprüfte Benutzer-E-Mail-Adresse
Wenn der Benutzer oder die Benutzerin, für den bzw. die du ein Benutzerzugriffstoken generieren möchtest, seine bzw. ihre primäre E-Mail-Adresse nicht mit GitHub überprüft hat, wird der Fehler unverified_user_email
angezeigt.
Um diesen Fehler zu beheben, fordere den Benutzer bzw. die Benutzerin auf, die primäre E-Mail-Adresse für das GitHub-Konto zu überprüfen. Weitere Informationen findest du unter Deine E-Mail-Adresse verifizieren.