2017-07-17 123 views
0

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

这就是我们目前构建gmail api的对象GoogleCredentials

  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的任何优势。我能够成功授权我自己,并仅通过访问令牌返回正确的响应。

当无效时(在API请求期间)设置刷新标记的优点是,由google刷新accessToken吗?如果是这样,是否有办法从谷歌获得这个新的访问令牌(以便我们可以将其存储在我们的数据库中)?

回答

1

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

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

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

这样就不需要设置刷新令牌。你甚至可能会怀疑批次是否需要自动刷新标记。

+0

感谢这工作。 – iart