2017-07-17 67 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