GoogleCredentialsBuilder OAuth 2.0

GoogleCredentialsBuilder OAuth 2.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();

我看不出在 GoogleCredentials 中设置 refreshToken 有什么好处。我能够成功授权自己并 return 仅使用访问令牌即可正确响应。

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

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

You may use DataStoreCredentialRefreshListener and set it for the credential using GoogleCredential.Builder.addRefreshListener(CredentialRefreshListener).

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

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