2017-06-11 95 views
0

我正在開發一個允許用戶從存儲在fitbit中的活動檢索信息的Web應用程序(Java中帶有spark java框架)。 要做到這一點,我使用隱式授予流程來獲取訪問令牌,但我不知道如何從重定向url中獲取(這就像「http://localhost:4567/oauth」),我必須做客戶端或我可以檢索服務器端? 如果我嘗試用request.url()或request.raw()。getRequestURI()檢索(帶有java端訪問令牌的URL),我只獲取沒有包含訪問令牌的片段的URL,例如,授權fitbit重定向我像一個URL像http://localhost:4567/oauth#access_token=xxxxxxxxxxxxxxxxxxxxx,我不能檢索包含我需要的「#」後面的部分。 感謝您的幫助和對不起我的英語Fitbit訪問令牌隱式授權流程

回答

0

如果您希望您的後端獲取訪問令牌,您應該使用授權代碼授權流程,而不是隱式流程。隱式流使用重定向URL的哈希部分(#後面)來傳輸令牌,該令牌停留在瀏覽器中,並且不會到達後端。通過Auth代碼授權流程,您可以獲得一個代碼作爲查詢參數,因此您可以使用Java Servlet API或構建於其上的一些Spark API輕鬆讀取它。然後,您需要使用OAuth2 /token端點來交換訪問令牌的代碼。

+0

好的,謝謝,此刻我從js取回了令牌,然後以隱藏的形式(用於自動提交的js腳本)傳遞給servlet,但這不是最佳解決方案。 我會改變方法,我將使用授權碼授權流程。 再次感謝 –