Fehlerhaftes Verhalten des OAuth2.0-Tokens (ungültige Anmeldeinformationen 401)
In Der Regel, Google OAuth2.0 Mechanismus funktioniert Super.
- Bestätigt der Benutzer die Berechtigung zum Zugriff auf Google-Konto mit ausgewählten Bereiche.
- Die refresh-token abgerufen, gespeichert und zu lange Lagerung.
- Jedes mal erforderlich (wenn der access-token abgelaufen) access-token abgerufen und verwendet, um Zugriff auf APIs.
Aber manchmal (bisher nur zwei mal für mehr als 6 Monate), die ich erlebt habe seltsames Verhalten:
Anfragen an Google APIs Ungültige Anmeldeinformationen (401) Fehler.
Aktualisieren der access-token (mit der gespeicherten refresh-token) nicht helfen.
Hier einige strukturierte Ausgabe habe ich beim testen dieser Ausgabe:
+ ------------------------------------------------------------------------- + | 1.VERSUCHT, AKTUALISIEREN SIE DAS TOKEN. | | 2.ERFOLGT DIE AUFFRISCHUNG DES TOKEN. | + ------------------------------------------------------------------------- + | access: **************************************************** | | refresh: ********************************************* | | expires: 3600 | | erstellt: 2013-07-23 13:12:36 | + ------------------------------------------------------------------------- +
Habe ich auch versucht, zu überprüfen, die "frischen" access-Tokens durch das senden von Anfragen an
https://www.googleapis.com/oauth2/v1/tokeninfo
+ ------------------------------------------------------------------------- + | 1. VERSUCHEN, ÜBERPRÜFEN SIE DIE TOKEN . | | 2. ERFOLGT DIE ÜBERPRÜFUNG DER TOKEN DER TOKEN. | + ------------------------------------------------------------------------- + | issued_to: ************.apps.googleusercontent.com | | Publikum: ************.apps.googleusercontent.com | | user_id: ************ | | expires_in: 3600 | | E-Mail: **********@gmail.com | | verified_email: 1 | | access_type: offline | | Bereiche:: | + ------------------------------------------------------------------------- + | https://www.googleapis.com/auth/userinfo.email | | https://www.googleapis.com/auth/userinfo.profile | | https://www.googleapis.com/auth/plus.me | | https://www.googleapis.com/auth/drive | + ------------------------------------------------------------------------- +
Aber wenn ich versuche, Zugriff auf Laufwerk füttern die Antwort ist:
Fehler beim Aufruf BEKOMMEN https://www.googleapis.com/drive/v2/files (401) Ungültige Anmeldeinformationen domain: global Grund: authError Meldung: Ungültige Anmeldeinformationen locationType: header Lage: Genehmigung
Wir haben auch erlebt das gleiche Problem mit dem Kalender.
Also:
- Token gültig war, bevor Sie (alles hat funktioniert).
- Erfrischend token funktioniert immer noch.
- Beantragt, ein Futtermittel reagiert mit "Ungültige Anmeldeinformationen" Fehler.
- Alle anderen Token sind immer noch toll arbeiten, was bedeutet, dass der code gültig ist.
In der Regel, wenn das token widerrufen "invalid_grant" Fehler wird zurückgegeben, wenn Sie versuchen, aktualisieren Sie das token.
Fragen
- Was kann der Grund sein für dieses Verhalten? Wenn Sie die refresh-token wurde, widerrufen wurde oder ungültig in irgendeiner anderen Art und Weise, sollte der Antrag für die neue access-token erzeugen Fehler?
- Ist es ein Weg, um überprüfen Sie die refresh-token?
InformationsquelleAutor der Frage Darth Flipman | 2013-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pro die Google-API-docs auf Fehler & error-codes:
https://developers.google.com/drive/handle-errors#401_invalid_credentials
Dies entspricht Ihre version der Fehler genau, und so ist sehr wahrscheinlich das, was Google denkt, liegt falsch mit deiner Anfrage.
Aber, wie Sie wissen, Google-API-Anforderungen können Fehler auftreten, sind ausgesprochen hilfreich, um tatsächlich eine Diagnose des Problems. Ich habe "Ungültige Anmeldeinformationen" Fehler für eine Reihe von Gründen. Es ist fast immer wirklich, weil ich gemacht habe, irgendeine Art von Veränderung, die ich dachte, wäre nicht die Materie, sondern auch wirklich tut.
Mein Erster Gedanke (Schuss im dunkel) wäre zu gehen, um die Google API console:
https://code.google.com/apis/console
Google auth token verifier ( https://www.googleapis.com/oauth2/v1/tokeninfo ) zurückkehren können, eine gültige Antwort, aber vielleicht ist das client-Geheimnis oder client-id werden geändert wurden.
Selbst kleinste änderungen in der response-body kann auch diesen Fehler verursachen.
Ich weiß nicht, wie Sie sind, die Anforderungen, ob von REST-Aufrufe oder eine client-lib, aber ich nutze die ruby-lib die es ermöglicht ein command line interface zu machen-API-Aufrufe. Ich habe festgestellt, dass dies & das OAuth2 Spielplatz sehr hilfreich bei der Diagnose Google-API-Aufrufe.
Nur ein FYI: ich habe nur noch 2 Fehler aus der Google-API: "Ungültige Anmeldedaten" und "Unzureichende Berechtigungen". Letztere hat fast immer zu tun hatten mit den schlechten Bereichen. Die erstere ist so ziemlich alles andere.
Ich würde auch sagen, dass, wenn Sie erfuhr nur 2 Fehler in 6 Monaten, sind Sie glücklich!
InformationsquelleAutor der Antwort Paul Dacus
Ich hatte dieses problem, als ich versuchte, zu Experimentieren mit dem ändern der redirect-url in der google-Konsole und dann die Aktualisierung meiner json-credentials-Datei auf dem server. Ich hatte zum löschen der session-Variablen vor dem Start von neuem. Also in deinem Projekt nur einmal:
Denken Sie daran, um entfernen Sie die
session_unset()
nach dem trocknen läuft es auf einmal.InformationsquelleAutor der Antwort Sriram Ranganathan
Ich bin auf die Entwicklung-Umgebung. Ich hatte dieses problem auch.
Zuerst habe ich versucht, aktualisieren der Anmeldeinformationen. Kein Ergebnis. Dann habe ich meine app gelöscht (da bin ich immer noch auf die Entwicklung-Umgebung, das war ok, aber SEIEN Sie VORSICHTIG MIT DIESER AKTION, wenn Sie bereits auf Produktion), erstellt eine neue, aktualisiert die Anmeldeinformationen JSON an den client... immer noch kein Ergebnis.
Ich löste es durch die öffnung auf einer neuen browser-Instanz, die nicht angemeldet in meinem Google-Konto (Privates Surfen, da bin ich auf Firefox), angemeldet mit meinem Google-Konto noch einmal, und versuchte mit meinem client (das ist eine Web-Anwendung). Ich wurde weitergeleitet auf die Genehmigung Bildschirm, wie erwartet, und nach, dass, es funktionierte gut für mich.
InformationsquelleAutor der Antwort priki
Ich in letzter Zeit erlebt diese komischen Fehler. Mein Update: ich habe die Funktion deaktiviert alle Sitzungen, die vor der Umleitung zu AuthUrl.
InformationsquelleAutor der Antwort EatCodePlaySleep
Vielleicht dieses Verhalten wird durch eine Einschränkung, die Google beschreibt wie folgt:
InformationsquelleAutor der Antwort ninsky
Ich hatte das gleiche problem mit diesem Fehler:
Fand aber diese sehr einfache Lösung von abhishek77in hier:
https://coderwall.com/p/fmr5ag/avoid-invalid-credentials-with-google-oauth2
Die Lösung ist:
Aktivieren diese in der Google API-Konsole behoben, der "Ungültige Anmeldeinformationen" problem für mich.
InformationsquelleAutor der Antwort Matt Shirk
Erhielt ich
(401) Invalid Credentials
wenn ich entfernt den Zugriff auf mein Google-Account für die jeweilige app. Also, was ich tun musste, war die Anfrage der Autorisierungs-URL (die eine, die beginnt mithttps://accounts.google.com/o/oauth2/auth
), wieder.InformationsquelleAutor der Antwort iloo
Ich lief in das gleiche problem wenn ich brauchte, um meine Bereiche von Nur Lesen auf Lesen Und Schreiben Alle Dateien. Also, ich meine aktualisierten Bereiche aus, an der Spitze meiner Datei von Nur-Lesen auf:
Google, von Ihren API-guide, hat diese Kommentare, die sagen, wenn Sie Bereiche, die Sie aktualisieren müssen Anmeldeinformationen. Ich glaube, das bedeutet, dass, obwohl ich bin mir nicht sicher, ob das token aktualisiert werden müssen. Der alte token ist immer noch im Besitz von Google, und Sie dachte, ich hatte nur Nur-Lesen-Zugriff, also warum würde es einen 401-Fehler zurück. Also, ich brauche ein remake mein token, aber der Google-bot wird niemals eine neue Einwilligung Bildschirm, die mir erlauben würde zu sagen erlauben Lese-Und Schreibzugriff Auf Alle Dateien. Also, ich brauchte, um zu bekommen, dass der Bildschirm um wieder rauf zu kommen, so würde es schaffen ein neues token, um die alten zu ersetzen:
Da hatte ich schon eine gespeicherte token, es wurde nie eine neue erstellen. So habe ich nur auskommentiert, die mit der alten token und sagte es, um einen neuen token, egal ob wir eine haben oder nicht. Dann ging ich zu meinem Verbundenen Apps in Google gelöscht und meinen alten Anschluss-Berechtigung. Ich bin mir nicht sicher, ob dieser Schritt notwendig ist, aber ich versuche nur, um Zugang zu meinem persönlichen account. Dann, wenn ich lief mein Programm, es aufgefordert, mich erneut authentifizieren zu müssen, und alles funktionierte und ich habe nicht erhalten eine Authentifizierungs-Fehler. Sobald Sie dies getan haben, stellen Sie sicher, entfernen Sie die auskommentierten Zeilen für die Verwendung bereits aus Token. Ich war mit dem Google-API quickstart.js Datei für alle dieser.
So, wenn ich meine aktualisierten Bereiche, der alte token war noch mit dem Lesen Nur im Rahmen, von daher würde ich bekommen (401) Ungültige Anmeldeinformationen.
InformationsquelleAutor der Antwort Daniel Jones
Ich dieses problem gelöst, wenn ich die Dateien gelöscht json, in c:\Users\[user]\.Anmeldeinformationen.
InformationsquelleAutor der Antwort raphavini
clearing-Speicher in Google Chrome hat bei mir (kenne nicht alle details von dem, was 'Speicher Löschen' clearing):
Application
RegisterkarteClear storage
InformationsquelleAutor der Antwort Joe GI