2014-07-07 47 views
0

我是OAuth 2.0的新手,對於用戶案例的最佳方法有點不清楚,如下所述。box.com api多線程網絡服務的OAuth身份驗證

我有一個web服務,我們用它從box.com中獲取數據。它是多線程服務,可以同時從box.com拉出多個線程。另外,我們有多個Web服務實例,它們將從box.com中提取文件。它們以某種方式進行協作,以便相同的文件不會被服務的不同實例拉動兩次。如果Web服務的實例關閉,則工作負載將遷移到其他可用實例。

所以這裏是問題列表?

  1. 是否由Box.com提供的BoxClient java api v2線程安全嗎?
  2. 如果BoxClient不是線程安全的,當實例化新客戶端時,是否需要向文件夾的用戶/所有者請求以批准我的新訪問代碼請求?這對於文件夾的用戶/所有者來說似乎是相當大的負擔。
  3. 如果我保留刷新標記的副本,我可以創建一個新的BoxClient而無需再次通過oauth 2.0的舞蹈嗎?任何示例代碼?
+0

歡迎SO。我喜歡你問了一些非常具體的問題。如果您在獲取答案時遇到困難,您可以嘗試將其分解到自己的帖子中(使用匹配的標題)。 –

回答

0

在github上提供的Java SDK與Box在Box中爲一些多線程和多服務器進程提供動力相同。

至於「保留刷新令牌的副本」幾點建議。

  1. 它們只能用於短時間窗口。不要計劃持有刷新令牌並使用它數月。儘管60天有用,但它在使用前也是很好的。
  2. 當你使用刷新令牌時,Box已經試圖通過允許你在一個短窗口內多次使用它來使其容錯,多服務器和多線程兼容。這樣,如果網絡中斷,您可以再次嘗試並取得成功。或者如果你有多個節點試圖刷新,只要你沒有開始使用新的AT(它基本上向Box表明你確實得到了這個新的AT),它們將會得到相同的新的AT/RT對。新的一對,你準備好使用它)。

希望有所幫助。保持良好的問題。

+0

如何獲得refreshtoken機制?我想知道是否有一種方法可以在沒有人工干預的情況下自動獲取refreshToken? – user3813622

0

經過一番閱讀的SDK源代碼,這是我拿出來獲得盒客戶端刷新令牌代碼:

public BoxClient getAuthenticatedClient(String refreshToken, String apiKey, String apiSecret) { 
    BoxResourceHub hub = new BoxResourceHub(); 
    BoxJSONParser parser = new BoxJSONParser(hub); 
    IBoxConfig config = (new BoxConfigBuilder()).build(); 
    BoxClient client = new BoxClient(apiKey, apiSecret, hub, parser, config); 
    Map<String, Object> map = new HashMap<String, Object>(); 
    map.put(BoxOAuthToken.FIELD_REFRESH_TOKEN, refreshToken); 
    BoxOAuthToken bt = new BoxOAuthToken(map); 
    client.authenticate(bt); 
    return client; 
}