Je souhaite obtenir un nouveau "jeton d'accès" basé sur le "jeton d'actualisation" enregistré dans la base de données.(JAVA) Google API analytics - impossible d'obtenir un nouveau "jeton d'accès" en utilisant "refresh token"
Voici le code que j'ai écrit:
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);
}
}
Je reçois ce message:
com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad
Demande {"error": "invalid_grant"}
J'utilise le même CLIENT_ID, CLIE NT_SECRET et "refresh token" dans un script php et là j'ai réussi à obtenir le nouveau "token d'accès" en utilisant "refresh token" quand "token d'accès" a expiré. J'ai écrit le code basé sur le javadoc.google-oauth-java-client.
Toute personne ici sait comment modifier le code pour obtenir le nouveau jeton d'accès?
Merci d'avance. MISE À JOUR: le problème était que j'enregistrais dans la base de données le refresh_token sans faire de json_decode dessus et qu'il contenait un "\" qui est considéré comme un caractère échappé dans JSON.
J'ai essayé votre code, et cela a fonctionné pour moi. Je pense que c'était un problème de données/format avec votre jeton d'actualisation. – user1697575