0

我们目前有一个批处理作业,它每 50 分钟左右使用刷新令牌刷新访问令牌。

这就是我们当前构造GoogleCredentials对象以构造 gmail api 的方式。

            Credential cred = new GoogleCredential.Builder()
                        .setTransport(httpTransport)
                        .setJsonFactory(jsonFactory)
                        .setClientSecrets(clientId, clientSecret)
                        .build()
                        .setAccessToken(accessToken)
                        .setRefreshToken(refreshToken);
           return new Gmail.Builder(httpTransport, jsonFactory, cred).setApplicationName("SalesforceIQ").build();

我看不出refreshTokenGoogleCredentials. 我能够成功地授权自己并仅使用访问令牌返回正确的响应。

设置刷新令牌的优势是在无效时(在 API 请求期间)由谷歌刷新 accessToken 吗?如果是这样,有没有办法从谷歌取回这个新的访问令牌(以便我们可以将它存储在我们的数据库中)?

4

1 回答 1

1

查看文档页面Using OAuth 2.0 with the Google API Client Library for Java - Data store

您可以使用DataStoreCredentialRefreshListener并使用GoogleCredential.Builder.addRefreshListener(CredentialRefreshListener)将其设置为凭证 。

当库自动刷新访问令牌并且新令牌存储在数据存储中时,将调用刷新侦听器。

这样就不需要设置刷新令牌。您甚至可能会质疑自动刷新令牌的批处理是否是必要的。

于 2017-07-20T09:57:39.083 回答