java - Problemas a atualizar do token de acesso - Stack Overflow em Português
Estou a fazer a autenticação à API do Google Calendar usando o Scribe, que por usa vez usa o OAuth 2.0. A autenticação é concluída com sucesso mas não sei como guardar o token de acesso (accessToken) na base de dados. Estou a fazer o seguinte:
/*Obter o API USER TOKEN e o API USE SECRET*/
API_USER_TOKEN = accessToken.getToken();
API_USER_SECRET = accessToken.getSecret();
/*Guardar tudo na base de dados*/
saveToken(API_USER_TOKEN, API_USER_SECRET);
Depois preciso de ir buscar o token e usá-lo novamente e é aqui que aparecem os problemas, como é que volto a construir o token que guardei na base de dados ? E como é que actualizo o token ?
Para atualizar o token estou a tentar usar o seguinte algoritmo:
OAuthRequest request = new OAuthRequest(Verb.POST,"https://www.googleapis.com/oauth2/v3/token");
request.addQuerystringParameter("grant_type", "refresh_token");
request.addQuerystringParameter("refresh_token", oldToken.getToken());
request.addQuerystringParameter("client_id", API_APP_KEY);
request.addQuerystringParameter("client_secret", API_APP_SECRET);
service.signRequest(oldToken, request);
Mas obtenho sempre o mesmo erro ( resposta da google api ): invalid_grant Bad Request
Seu erro está nessa linha:
O token que você precisa usar para gerar um novo par é o refresh token, e não o access token.
Como obtenho o refresh token ? – urb 7/12/14 às 15:40
Não sei como é a implementação Java, mas sei que, de acordo com o protocolo OAuth V2, quando você requisita um Access Token, você recebe não só o mesmo como também um Refresh Token, para usá-lo quando o Access Token expirar. Você deve, então, armazenar o Refresh Token e usá-lo no parâmetro refresh_token. – Rodrigo Rigotti 7/12/14 às 22:24
@AndréLizardo Fiz algumas implementações com a API do Google Drive e a documentação exemplifica como obter o Refresh Token. Em resumo, o token é obtido na primeira vez que o usuário autoriza o acesso da sua aplicação. Você deve armazená-lo para uso posterior. – utluiz 6/01/15 às 14:40
Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag java rest oauth oauth2 google-calendar ou faça sua própria pergunta.