2012-05-03 64 views
2

我想確保我已正確地理解(草案)規範,其中指出:OAuth 2.0重定向URL支持查詢字符串參數嗎?

重定向端點URI必須是絕對URI由
[RFC3986] 4.3節所定義的。端點URI可以包括格式爲
([W3C.REC-html401-19991224])查詢組件([RFC3986] 3.4節), 的「應用程序/ x-www-form-urlencoded」格式的,必須在添加時保留額外的查詢參數。端點URI不能包含片段組件。

我想問的原因是Google或Facebook似乎都不會保留任何querystrings。

回答

3

重新閱讀規範,似乎該規範的引用部分不適用於OAuth服務器對URI的處理,而是OAuth客戶端處理給定的原始端點URI。

在它的說法,如果我說,你有我的OAuth端點重定向到我的服務器的OAuth授權時使用換句話說就是:

http://example.com/oauth.php?endpoint=token 

然後當客戶端添加?response_type=code&client_id=...&state=...&redirect_uri=...到URI這是不允許丟棄在原有端點URI的「端點=令牌?」並且必須使用URI:

http://example.com/oauth.php?endpoint=token&response_type=code&client_id=...&state=...&redirect_uri=... 

因此,至少就作爲規範的一部分去那裏什麼也沒有說, Facebook,谷歌等...必須預先提供除'狀態'之外的任何未知的查詢參數。

從技術上講,您可以使用&state=參數以JSON格式傳遞自定義數據。雖然這可能會或可能不會工作。 IIRC我注意到,當您使用特殊字符時,Meetup的OAuth 2實現似乎破壞了狀態。我認爲是違反規範的東西。

+0

我們結束了JSON編碼我們的自定義參數,並添加他們'狀態'的描述。與Facebook和Google合作良好。 –

相關問題