Mit Refresh Token Ausnahme { "error" : "invalid_grant" }'
Habe ich erfolgreich gebaut, eine Anwendung, die ruft eine access-und refresh-token.
In meinem script, das ich prüfen, ob das access-token gültig ist und wenn nicht ich dann der refresh-token, um den Zugriff $client->refreshToken($refreshToken);
Code in vollem Umfang,
$refreshToken = '<REFRESH_TOKEN>';
$client_id = '<CLIENT_ID>';
$client_secret = '<CLIENT_SECRET>';
//Setup infomation
$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setAccessType("offline");
$client->addScope("https://mail.google.com/");
//If access token is not valid use refresh token
if($client->isAccessTokenExpired()) {
//Use refresh token
$client->refreshToken($refreshToken);
} else {
//Use access token
echo $client->setAccessToken($accessToken);
}
Jedoch, wenn Sie versuchen, verwenden Sie die refresh-token bekomme ich eine Exception :
Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }''
Du musst angemeldet sein, um einen Kommentar abzugeben.
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).
Gibt es viel mögliche Ursachen für die Probleme, hier ist eine Checkliste:
Ich habe einen kurzen Artikel geschrieben fasst jedes Element mit einigen debugging-Anleitung, um den Schuldigen finden. Wir verbrachten die Tage mit jagen hinunter, hoffe, es kann anderen helfen, schalten Sie diese Tage in Stunden.
Den Grund der "Ungültig-grant" - Fehler kann durch die refresh-token nicht funktioniert. Dies konnte sein, weil, Wenn die Anzahl von refresh-Token limit überschreitet, werden ältere Token ungültig. Wenn die Anwendung versucht, eine ungültig refresh-token, ein invalid_grant Fehler-Antwort zurückgegeben.Hier ist die link für mehr Dokumentation.
"invalid_grent" kann durch einen abgelaufenen/ungültigen refresh token. In meinem Fall hatte es ein zusätzliches Leerzeichen am Ende.
Ist wie alle sagen Sie, soweit ich weiß, der Fehler kann verursacht werden, durch 2 Gründen:
Hatte ich das Problem vorher (gleiche Fehlermeldung) und stellt sich heraus, meine Refresh-Token bekam abgelaufen.
meiner Probleme ist authorization_code nur zu exchange access token, können Sie es wiederverwenden. nur erneuern authorization_code um neue access-token
Google hat jetzt eine eigene Seite in Ihre API-guide für diesen Fehler, wo er sagt, es gibt nur 2 Gründe für dieses...
Den Grenzwert für jedes einzelne paar von OAuth-2.0-client und Google-Analytics-Konto ist 25 refresh Token. Wenn die Anwendung weiterhin auf Wunsch refresh-tokens für den selben Kunden/Konto-pair, sobald die 26-token wird ausgestellt, die 1. refresh-token, die vorher ausgestellt werden ungültig.