ERRO: 400 Bad Request

0 respostas
jsonjava
L

Olá galera, primeiro gostaria de explicar com oque estou trabalhando.

Tenho um método de backup que utiliza a API OAuth 2.0 juntamente com o Google Drive.
Para que o backup funcione precisa do Token, e este Token tem um vencimento de 6 em 6 meses que por sinal descobri que no código não esta tratando este vencimento. Com isso começou os problemas…
Com bastante pesquisa encontrei o “RefreshTokenRequest” seria a solução para isso.
Aqui esta o método:

public void refreshAccessToken() throws IOException, Exception {
        try {
            //Pegando DataStoreFactory
            httpTransport = GoogleNetHttpTransport.newTrustedTransport();
            dataStoreFactory = new FileDataStoreFactory(new java.io.File(System.getProperty("user.home"), ".store/drive_sample"));
            
            //Instanciando o clientSecrets para pegar os dados que precisa no RefreshToken
            GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
                    new InputStreamReader(Upload.class.getResourceAsStream("/Backup/client_secrets.json")));

            //Intanciando credential para pegar RefreshToken.
            Credential credential = authorize();
            
            //Ignorem estas variaveis, estava usando em outro método... 
            String token = clientSecrets.getDetails().getTokenUri();
            String clientId = clientSecrets.getDetails().getClientId();
            String clienteSecret = clientSecrets.getDetails().getClientSecret();
            
            //Gerando refresh do token
            
            RefreshTokenRequest req = new RefreshTokenRequest(httpTransport, JSON_FACTORY, new GenericUrl(
                    clientSecrets.getDetails().getTokenUri()), credential.getRefreshToken());

            req.set("client_id", clientSecrets.getDetails().getClientId());
            req.set("client_secret", clientSecrets.getDetails().getClientSecret());

            TokenResponse response = req.execute();            
            
            
            //GoogleTokenResponse response = new GoogleRefreshTokenRequest(httpTransport, JSON_FACTORY, token,
                   // clientId, clienteSecret).execute();
            
            
            System.out.println("Access token: " + response.getAccessToken());
            
        } catch (TokenResponseException e) {
            e.printStackTrace();            
            
            if (e.getDetails() != null) {
                System.err.println("Error: " + e.getDetails().getError());
                if (e.getDetails().getErrorDescription() != null) {
                    System.err.println(e.getDetails().getErrorDescription());
                }
                if (e.getDetails().getErrorUri() != null) {
                    System.err.println(e.getDetails().getErrorUri());
                }
            } else {
                System.err.println(e.getMessage());
            }
        }
    }

Mesmo utilizando o método o erro continuou a persistir.
Pelo meu conhecimento o código esta certo, pois fiz várias pesquisas e esta bem parecido com de outras pessoas.

Este é o erro que esta aparecendo:

================== Criando repositório ==================

abr 26, 2018 1:29:25 PM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
ADVERTÊNCIA: unable to change permissions for everybody: C:\Users\Luiz-PC\.store\drive_sample
abr 26, 2018 1:29:25 PM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
ADVERTÊNCIA: unable to change permissions for owner: C:\Users\Luiz-PC\.store\drive_sample
java.io.BufferedInputStream@1158d832
com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request
{
  "error" : "invalid_grant",
  "error_description" : "Bad Request"
}
java.io.BufferedInputStream@41e29ba
	at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105)
	at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:287)
	at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:307)
	at Backup.Upload.refreshAccessToken(Upload.java:287)
	at Backup.Upload.iniciaUpload(Upload.java:181)
	at Backup.FrmBackup$1.run(FrmBackup.java:58)
Error: invalid_grant
Bad Request
abr 26, 2018 1:29:33 PM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
ADVERTÊNCIA: unable to change permissions for everybody: C:\Users\Luiz-PC\.store\drive_sample
abr 26, 2018 1:29:33 PM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
ADVERTÊNCIA: unable to change permissions for owner: C:\Users\Luiz-PC\.store\drive_sample

Galera já estou a muito tempo procurando sobre este erro e tudo que encontro não resolve meu problema, se alguém puder me ajudar ficarei muito grato.
Obrigado.

Criado 26 de abril de 2018
Respostas 0
Participantes 1