我正在使用Spring Boot作为后端应用程序。 我已将客户的 access_token , refresh_token 和 access_id 存储在我的postgresql数据库中。
这是我的代码尝试在令牌过期时获取新的访问令牌。
public void refreshGoogleIdToken(GoogleAuthEntity googleAuthEntity) {
LOGGER.debug("GoogleAuthService.refreshGoogleIdToken()");
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(transport)
.setJsonFactory(jsonFactory)
.setClientSecrets(googleAuthClientId, googleAuthClientSecret)
.build();
credential.setAccessToken(googleAuthEntity.getAccessToken());
credential.setRefreshToken(googleAuthEntity.getRefreshToken());
try {
if (credential.refreshToken()) {
Long newExpireTime = credential.getExpirationTimeMilliseconds();
String newAccessToken = credential.getAccessToken();
String newRefreshToken = credential.getRefreshToken();
LOGGER.debug("NewAccessToken: " + newAccessToken);
LOGGER.debug("NewRefreshToken: " + newRefreshToken);
LOGGER.debug("NewExpireTime: " + newExpireTime);
}
} catch (IOException e) {
LOGGER.debug("GoogleAuthService.refreshGoogleIdToken() - IOException");
e.printStackTrace();
}
}
Google返回400错误,描述为:400错误的请求
{
"error" : "invalid_grant",
"error_description" : "Bad Request"
}
我犯了什么错误? 谢谢
答案 0 :(得分:0)
我一直在使用Spring框架的OAuth2,并且仅在遇到刷新令牌无效,过期,已吊销或与使用的重定向URI不匹配的情况下遇到此错误“无效授权” 在授权请求中,或发给其他客户
根据您的情况,我认为您应该删除存储的刷新令牌/对其进行更正,然后再次调试代码。这可能是由于测试时存储在PostgreSQL数据库中的令牌信息错误所致。