Unable to refresh access token : response is "unauthorized_client"
google-api, google-api-java-client, oauth-2.0
Solution
I created access and refresh token in OAuth2 playground and then i copied them to my app. It`s not allowed to have different clients for autorization and for token refresh.
Problem
I am getting an error when I try to refresh access token: 400 Bad Request {error : "unauthorized_client"} From the Google token URI: ``` { "error" : "invalid_request" } ``` I read this answer here and the official Google documentation (which describes how a `POST` request should look) and I don't see any difference. I captured my `POST` request (secrets removed): ``` POST /SHOWMERAWPOST HTTP/1.1 User-Agent: Google-HTTP-Java-Client/1.10.3-beta (gzip) Pragma: no-cache Host: requestb.in Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Content-Length: 175 Connection: keep-alive Cache-Control: no-cache Accept-Encoding: gzip Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 grant_type=refresh_token&refresh_token=******&client_id=*******.apps.googleusercontent.com&client_secret=****** ``` Java code which sends the request: ``` RefreshTokenRequest req = new RefreshTokenRequest(new NetHttpTransport(), new JacksonFactory(), new GenericUrl( getSecrets().getDetails().getTokenUri()), REFRESH_TOKEN); req.set("client_id", getSecrets().getDetails().getClientId()); req.set("client_secret", getSecrets().getDetails().getClientSecret()); TokenResponse response = req.execute(); ``` Is there anything wrong?