我在GitHub上有一个小型Google App Engine项目,我已经完成了#34;几个月前。
它一直工作到现在(最后一次使用是2-3个月前),但似乎谷歌改变了一些东西,我不知道真正的问题是什么,以及我如何解决它。
问题出在此文件中(第59行): File
代码:
public class TokenManager {
static private final String TOKEN_URL = "https://www.googleapis.com/oauth2/v3/token";
static private final String ENC = "UTF-8";
private String _refreshToken;
private String _clientId;
private String _clientSecret;
private final Gson _gson = new Gson();
private TokenData _tokenData = new TokenData();
...
private void refreshAccessToken() throws Exception {
String payload = "client_secret=$client_secret&grant_type=refresh_token&refresh_token=$refresh_token&client_id=$client_id";
payload = payload.replace("$client_secret", URLEncoder.encode(_clientSecret, ENC));
payload = payload.replace("$refresh_token", URLEncoder.encode(_refreshToken, ENC));
payload = payload.replace("$client_id", URLEncoder.encode(_clientId, ENC));
HTTPRequest request = new HTTPRequest(new URL(TOKEN_URL), HTTPMethod.POST);
request.setPayload(payload.getBytes(ENC));
String stringData = new String(URLFetchServiceFactory.getURLFetchService().fetch(request).getContent(), ENC);
_tokenData = _gson.fromJson(stringData, TokenData.class);
}
}
问题在于访问令牌请求。 (我使用离线刷新令牌。)
答案如下:
{
"error": "invalid_grant",
"error_description": "Bad Request",
"error_uri": ""
}
所有尝试都有同样的问题。
有谁知道出了什么问题?
感谢您的帮助!
答案 0 :(得分:0)
我发现了问题。
可能我之前的刷新令牌已过期。我试着生成 一个新的,但我误解了这个过程,我认为“代码” 参数作为刷新令牌。
https://developers.google.com/identity/protocols/OAuth2WebServer#offline