invalid_grant versucht, oAuth-Token von Google zu erhalten
Ich immer eine invalid_grant
Fehler zu versuchen, um einen oAuth-token von Google zu verbinden, um Ihre Kontakte-api. Alle Angaben korrekt sind und ich dreifach überprüft, so eine Art ratlos.
Weiß jemand, was möglicherweise dieses Problem verursacht werden? Ich habe versucht, die Einrichtung einer anderen client-id, aber ich bekomme das gleiche Ergebnis, ich habe versucht, verbinden viele verschiedene Möglichkeiten, einschließlich versuchen der Kraft-Authentifizierung, aber immer noch das gleiche Ergebnis.
InformationsquelleAutor der Frage André Figueira | 2012-05-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief in dieses problem, wenn ich nicht ausdrücklich um eine "offline" - Zugang senden, wenn der Benutzer die OAuth "willst du dir diese app die Berechtigung zum berühren deine Sachen?" - Seite.
Stellen Sie sicher, dass Sie angeben, access_type=offline in Ihrer Anfrage.
Details hier: https://developers.google.com/accounts/docs/OAuth2WebServer#offline
(Auch: ich denke, Google hat diese Einschränkung ist für Ende 2011 vorgesehen. Wenn Sie alte Token aus, bevor dann, werden Sie brauchen, um zu senden, die die Benutzer die Berechtigung die Seite zu ermächtigen, die offline-Nutzung.)
InformationsquelleAutor der Antwort bonkydog
Ich lief in das gleiche problem trotz Angabe der "offline" -
access_type
in meinem Antrag nach bonkydog Antwort. Lange Geschichte kurz, fand ich, dass die beschriebene Lösung hier für mich gearbeitet:https://groups.google.com/forum/#!topic/google-analytics-Daten-export-api/4uNaJtquxCs
Im wesentlichen, wenn Sie eine OAuth2-Client in Ihrem Google APIs-Konsole Google wird Ihnen eine "Client-ID" und eine "E-Mail-Adresse" (vorausgesetzt, Sie wählen Sie "webapp" als client-Typ). Und trotz Google irreführend, Namenskonventionen, Sie erwarten, dass Sie zum senden der E-Mail-Adresse" als Wert der
client_id
parameter, wenn Sie den Zugriff auf Ihre OAuth2-API.Dies gilt bei Aufruf dieser URL:
Beachten Sie, dass der Aufruf der ersten URL erfolgreich wenn Sie rufen es mit Ihrem "Client-ID" statt "E-Mail-Adresse". Aber mit dem code zurückgegeben, von der die Anforderung wird nicht funktionieren, wenn der Versuch, eine Inhaber-token von der zweiten URL. Stattdessen erhalten Sie eine "Fehler 400" und ein "invalid_grant" - Meldung.
InformationsquelleAutor der Antwort aroth
Dies ist zwar eine alte Frage, es scheint, wie viele immer noch darauf stoßen - wir verbrachten die Tage auf Ende verfolgen diese nach unten uns.
In der OAuth2-Spezifikation, "invalid_grant" ist eine Art von catch-all für alle Fehler in Zusammenhang mit ungültigen/abgelaufenen/widerrufen-Token (auth gewähren oder refresh-token).
Für uns, das problem war zweifach:
Benutzer aktiv widerrufen Zugang zu unserer app
Macht Sinn, aber so aus: 12 Stunden nach Widerruf, Google Stoppt das senden von die Fehlermeldung in Ihrer Antwort:
“error_description” : “Token has been revoked.”
Es ist eher irreführend, da Sie davon ausgehen, dass die Fehlermeldung, ist es zu allen Zeiten, das ist nicht der Fall. Sie können prüfen, ob Ihr der app noch Zugriff auf die apps-Berechtigung-Seite.
Benutzer zurückgesetzt/wiederhergestellt sein Google Passwort
Im Dezember 2015, Google geändert Ihre Standard-Verhalten, so dass das zurücksetzen von Kennwörtern für nicht-Google-Apps-Nutzer würde automatisch widerrufen, werden alle Benutzer-apps refresh Token. Auf Widerruf, die Fehlermeldung folgt der gleichen Regel wie der Fall vor, so dass Sie bekommen nur die "error_description" in den ersten 12 Stunden. Es scheint nicht zu irgendeiner Weise zu wissen, ob der Benutzer manuell gesperrt-Zugang (intentful) oder es geschah, weil von einem Passwort-reset (side-effect).
Abgesehen von denen, es gibt eine Vielzahl von anderen möglichen Ursachen, könnte die den Fehler auslösen:
Ich habe einen kurzen Artikel geschrieben fasst jedes Element mit einigen debugging-Anleitung, um den Schuldigen finden. Hoffe, es hilft.
InformationsquelleAutor der Antwort laander
Ich hatte das gleiche problem. Ich für mich fest, dies über den E-Mail-Adresse (die Zeichenfolge endet mit [email protected]) anstelle von Client ID client_id parameter-Wert. Die Namensgebung durch Google setzen, ist verwirrend hier.
InformationsquelleAutor der Antwort Tony Vu
Ich hatte die gleiche Fehlermeldung 'invalid_grant' und es war, weil die
authResult['code']
senden von client-side javascript wurde nicht richtig aufgenommen auf dem server.
Versuchen Sie Ausgabe, die es wieder vom server, um zu sehen, ob es richtig ist, und nicht einen leeren string.
InformationsquelleAutor der Antwort Mihai Crăiță
Mein Problem war, dass ich diese URL:
Wann sollte ich diese URL:
War diese Prüfung ein service-Konto, die wollte den offline-Zugriff auf die Lagerung Motor.
InformationsquelleAutor der Antwort Brad Lee
wenn Sie mit Schreiber Bibliothek, richten Sie einfach den offline-Modus, wie bonkydog vorgeschlagen
hier ist der code:
https://github.com/codolutions/scribe-java/
InformationsquelleAutor der Antwort Oleksii Kyslytsyn
in diesem Ort
console.developers.google.com
diese Konsole board wählen Sie Ihr Projekt Eingabe der Eid-url.
die oauth callback url umgeleitet wird, wenn die oauth-Erfolg
InformationsquelleAutor der Antwort user5699596
Mithilfe eines Android-clientId (keine client_secret) war ich immer folgende Fehlermeldung als Antwort:
Ich finde keine Dokumentation für das Feld 'code_verifier' ich aber entdeckt, wenn man es auf gleiche Werte in den Autorisierungs-und token anfordert, wird Sie diesen Fehler. Ich bin mir nicht sicher, was das soll Wert sein sollte, oder wenn es sollte sicher sein. Es hat einige minimale Länge (16? Zeichen), aber ich fand die Einstellung zu
null
auch funktioniert.Ich bin mit AppAuth für die Autorisierungs-Anfrage in mein Android-client hat eine
setCodeVerifier()
Funktion.Hier ist ein Beispiel token-Anfrage in Knoten:
Habe ich getestet und diese funktioniert mit beiden
https://www.googleapis.com/oauth2/v4/token
undhttps://accounts.google.com/o/oauth2/token
.Wenn Sie
GoogleAuthorizationCodeTokenRequest
statt:InformationsquelleAutor der Antwort Justin Fiedler
Dies ist eine doofe Antwort, aber das problem für mich war, dass ich konnte nicht erkennen, hatte ich schon ausgestellt, eine aktive oAuth-token für mein google-Nutzer, die ich nicht zu speichern. Die Lösung in diesem Fall ist zu gehen, um die api-Konsole und zurücksetzen der client-Geheimnis.
Gibt es zahlreiche weitere Antworten auf, DAMIT dieser Effekt zum Beispiel
Zurücksetzen-Client-Geheimnis OAuth2 - clients brauchen, um wieder den Zugang gewähren?
InformationsquelleAutor der Antwort paul
Haben Sie vielleicht zu entfernen, stale/invalid OAuth Antwort.
Credit: node.js google oauth2 Probe aufgehört zu arbeiten invalid_grant
Hinweis: Ein OAuth-Reaktion wird auch ungültig, wenn das Passwort, das Sie bei der ursprünglichen Genehmigung geändert wurde.
Wenn in einem bash-Umgebung können Sie verwenden Sie den folgenden entfernen die veraltete Antwort:
rm /Users/<username>/.credentials/<authorization.json>
InformationsquelleAutor der Antwort Lindauson
Es gibt zwei wichtige Gründe für invalid_grant Fehler, die Sie haben zu kümmern, bevor die POST-Anforderung für die Refresh-Token und Access Token.
RFC 6749 OAuth 2.0 definiert invalid_grant:
Die bereitgestellten Berechtigung erteilen können (z.B. authorization code resource owner Anmeldeinformationen) oder refresh-token ist ungültig, abgelaufen, widerrufen, nicht mit der redirect-URI verwendet, der in der authorization-Anfrage, oder wurde ausgestellt, um einem anderen client.
Fand ich ein weiteres gutes Artikel, hier finden Sie noch viele weitere Gründe für diesen Fehler.
https://blog.timekit.io/google-oauth-invalid-grant-nightmare-and-how-to-fix-it-9f4efaf1da35
InformationsquelleAutor der Antwort Hisham Javed
Nach der Betrachtung und versucht, all die anderen Möglichkeiten, hier, hier ist, wie ich das Problem gelöst, in nodejs mit der
googleapis
- Modul in Verbindung mit derrequest
Modul, die ich verwendet, um zu Holen die Token statt der vorgesehenengetToken()
Methode:Ich einfach verwenden
request
um die api-Anfrage über HTTP wie hier beschrieben:https://developers.google.com/identity/protocols/OAuth2WebServer#offline
InformationsquelleAutor der Antwort lwdthe1
Versuchen, ändern Sie Ihre url für requst zu
InformationsquelleAutor der Antwort Sergiy Voytovych