2012-01-02 71 views
2

嗨,大家好:對於一個請求來說,正確的http響應代碼應該是什麼樣的,雖然格式良好,但它包含一個無效的oauth標記?400是否爲OAuth驗證錯誤(http)的適當錯誤代碼?

錯誤代碼400似乎有誤導性,,因爲無效的oauth是,我相信,不是畸形的請求。

奇怪的是,它是這種情況,Facebook的OAuth符(如果無效)時,使得結果的在返回的API返回如果400響應代碼....

+0

定義「無效的oauth」。使用錯誤的/缺少的客戶端或範圍也可能被認爲是格式錯誤的請求(不過高於HTTP級別)。 – eckes 2013-12-22 00:18:10

回答

3

正確。

401 Unauthorized應該是您的示例中響應狀態代碼的主要選擇。

編輯:

我花了一些時間瀏覽的OAuth2草案,它看起來像他們指定當客戶端身份驗證失敗以下:

  • 通常必須用400 Bad Request迴應,但
  • 可以用401 Unauthorized
  • 作出響應,如果使用嘗試驗證,則必須用401 Unauthorized作出響應請求標頭。如果是這樣,它還必須在響應中包含一個WWW-Authenticate
+0

嗯...任何想法爲什麼Facebook實現400壞的oauths返回? – jayunit100 2012-01-02 22:20:56

+0

那麼,我自己實現了OAuth提供程序,我只能說我並不認爲讓所有響應代碼正確無誤是微不足道的。我不得不重構一些,以達到我想要的地方。在臉書的情況下,我只能推測他們忽視了它,或者根本不認爲這是值得的。在旁註中:developers.facebook.com上有超過1000個開放的錯誤,他們似乎都沒有處理這個問題。 – 2012-01-03 10:14:19

+0

閱讀oauth2 daft後編輯我的答案。 – 2012-01-03 11:05:17

5

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是正確的。

+0

這是爲Oauth 1.0 - 它可能是不同的Oauth 2.0(Facebook使用) - http://tools.ietf.org/html/draft-ietf-oauth-v2-22可能會指定,否則(我沒有讀過規格,所以我不知道) – Igy 2012-01-03 09:41:52