2014-12-23 55 views
2

我試圖連接到Dropbox API using OAuth2。我使用DropNet作爲客戶端庫並使用令牌(隱式授權)流選項。測試代碼(與DropNet.Samples.WinForms大致相同)是一個簡單的對話框,帶有嵌入式瀏覽器控件以顯示API登錄頁面。Dropbox OAuth2授權API未按預期重定向

我看到的問題是API不會將瀏覽器重定向到指定的重定向URL(http://localhost)。提供我的憑據後,單擊「允許」以授予訪問權限,而不是被重定向到本地主機,我被重定向到https://www.dropbox.com/1/oauth2/authorize_submit,導致無法加載(錯誤404)。重定向的URL上也沒有查詢參數。我期望通過包含授權碼的查詢參數將其重定向到本地主機。

僅供參考,登錄網址是:https://www.dropbox.com/1/oauth2/authorize?response_type=token&client_id=<blah>&redirect_uri=http://localhost

有誰知道我在做什麼錯?該行爲看起來與Obtain OAuth2 Access Token for Dropbox Core API with Codenameone's Oauth2 Class中描述的非常相似,但沒有直接答案。

+0

重定向URI應該在/ oauth2/authorize上的redirect_uri參數中指定:https://www.dropbox.com/developers/core/docs#oa2-authorize您是否將該文件提供給/ oauth2/authorize? – Greg

+0

是的,我提供了重定向的URL,並驗證它在查詢字符串中的授權調用。 – Charlie

+0

你可以發佈樣本/授權URL嗎? – Greg

回答

1

[編輯] 我仍然不知道爲什麼它不會使用http://localhost作爲重定向URL,但我改用了@Greg推薦的https://www.dropbox.com/1/oauth2/redirect_receiver,它現在可以正常工作。

如果它影響到其他人試圖用DropNet的WinForms示例代碼,我也不得不調整代碼來處理NavigatingNavigated事件在嵌入式瀏覽器,除了DocumentCompleted,因爲瀏覽器行爲似乎有所不同由操作系統和瀏覽器版本(不是一個大的驚喜)。該代碼還需要足夠智能,以便在檢測到重定向後停止導航,因爲瀏覽器可能會從該點繼續導航。

本來我已經通過重定向到谷歌來修復它,但正如@smarks指出的那樣,這不是一個好主意。

+1

很高興聽到它現在正在工作,但我相信它應該已經與http:// localhost一起工作。如果有幫助Dropbox確實有這個頁面用於此目的:https://www.dropbox.com/1/oauth2/redirect_receiver – Greg

+0

謝謝!我不知道那個redirect_receiver頁面 - 這看起來正是我想要的。我會嘗試一下,看看它是如何工作的,並用這個信息更新答案。 – Charlie

+1

「這就是說,使用Google作爲重定向網址可能是一件壞事,因爲我基本上是將它們發送給我的令牌。當然,它們不會讓我的API密鑰使用它,但它似乎仍然前途未卜「。 API密鑰是公共知識,無論如何您都不需要使用訪問令牌。實際訪問令牌位於URL片段中,因此它不會直接發送到目標服務器,但頁面上的JavaScript可以訪問它,所以您認爲這是安全風險是正確的。 ('redirect_receiver'是個不錯的選擇) – smarx