Chcę uzyskać nowy "token dostępu" w oparciu o "odświeżony token" zapisany w bazie danych.(JAVA) Google API analytics - nie można uzyskać nowego "tokena dostępu" za pomocą "odświeżania tokena"
Oto kod pisałem:
GoogleCredential.Builder credentialBuilder = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT).setJsonFactory(JSON_FACTORY)
.setClientSecrets(CLIENT_ID, CLIENT_SECRET);
credentialBuilder.addRefreshListener(new MyCredentialRefreshListener());
credential = credentialBuilder.build();
credential.setRefreshToken("saved_refresh_token_from_database");
try {
credential.refreshToken();
} catch (IOException e) {
e.printStackTrace();
}
class MyCredentialRefreshListener implements CredentialRefreshListener {
public void onTokenResponse(Credential cr, TokenResponse tr) {
System.out.println("Credential was refreshed successfully.");
}
public void onTokenErrorResponse(Credential cr, TokenErrorResponse tr) {
System.out.println(tr);
}
}
otrzymuję komunikat:
com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad
Zamówienie {"błąd": "invalid_grant"}
Używam tego samego CLIENT_ID, CLIE NT_SECRET i "odśwież tokena" w skrypcie php i tam udało mi się zdobyć nowy "token dostępu" za pomocą "odświeżającego tokena", gdy wygasł "token dostępu".
Napisałem kod na podstawie javadoc.google-oauth-java-client.
Ktoś wie, jak zmodyfikować kod, aby uzyskać nowy token dostępu?
Z góry dziękuję.
AKTUALIZACJA: Problem polegał na tym, że zapisywałem w bazie danych refresh_token bez wykonywania json_decode na nim i zawierało "\", co jest uważane za znak zbiegunowy w JSON.
Wypróbowałem twój kod i zadziałało to dla mnie. Myślę, że to był problem z formatem danych/formatu z odświeżającym tokenem. – user1697575