如何刷新服务器端(JAVA)上的access_token?

时间:2018-10-27 06:05:51

标签: spring-boot google-drive-api google-signin

我正在使用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"
}

我犯了什么错误? 谢谢

1 个答案:

答案 0 :(得分:0)

我一直在使用Spring框架的OAuth2,并且仅在遇到刷新令牌无效,过期,已吊销或与使用的重定向URI不匹配的情况下遇到此错误“无效授权” 在授权请求中,或发给其他客户

根据您的情况,我认为您应该删除存储的刷新令牌/对其进行更正,然后再次调试代码。这可能是由于测试时存储在PostgreSQL数据库中的令牌信息错误所致。