嗨,大家好:對於一個請求來說,正確的http響應代碼應該是什麼樣的,雖然格式良好,但它包含一個無效的oauth標記?400是否爲OAuth驗證錯誤(http)的適當錯誤代碼?
錯誤代碼400似乎有誤導性,,因爲無效的oauth是,我相信,不是畸形的請求。
奇怪的是,它是這種情況,Facebook的OAuth符(如果無效)時,使得結果的在返回的API返回如果400響應代碼....
嗨,大家好:對於一個請求來說,正確的http響應代碼應該是什麼樣的,雖然格式良好,但它包含一個無效的oauth標記?400是否爲OAuth驗證錯誤(http)的適當錯誤代碼?
錯誤代碼400似乎有誤導性,,因爲無效的oauth是,我相信,不是畸形的請求。
奇怪的是,它是這種情況,Facebook的OAuth符(如果無效)時,使得結果的在返回的API返回如果400響應代碼....
正確。
401 Unauthorized
應該是您的示例中響應狀態代碼的主要選擇。
編輯:
我花了一些時間瀏覽的OAuth2草案,它看起來像他們指定當客戶端身份驗證失敗以下:
400 Bad Request
迴應,但401 Unauthorized
和401 Unauthorized
作出響應請求標頭。如果是這樣,它還必須在響應中包含一個WWW-Authenticate
。嗯...任何想法爲什麼Facebook實現400壞的oauths返回? – jayunit100 2012-01-02 22:20:56
那麼,我自己實現了OAuth提供程序,我只能說我並不認爲讓所有響應代碼正確無誤是微不足道的。我不得不重構一些,以達到我想要的地方。在臉書的情況下,我只能推測他們忽視了它,或者根本不認爲這是值得的。在旁註中:developers.facebook.com上有超過1000個開放的錯誤,他們似乎都沒有處理這個問題。 – 2012-01-03 10:14:19
閱讀oauth2 daft後編輯我的答案。 – 2012-01-03 11:05:17
從http://oauth.net/core/1.0a/#http_codes
HTTP 400 Bad Request
Unsupported parameter
Unsupported signature method
Missing required parameter
Duplicated OAuth Protocol Parameter
HTTP 401 Unauthorized
Invalid Consumer Key
Invalid/expired Token
Invalid signature
Invalid/used nonce
所以401是正確的。
這是爲Oauth 1.0 - 它可能是不同的Oauth 2.0(Facebook使用) - http://tools.ietf.org/html/draft-ietf-oauth-v2-22可能會指定,否則(我沒有讀過規格,所以我不知道) – Igy 2012-01-03 09:41:52
定義「無效的oauth」。使用錯誤的/缺少的客戶端或範圍也可能被認爲是格式錯誤的請求(不過高於HTTP級別)。 – eckes 2013-12-22 00:18:10