我有一個JSON REST API。有一個握手會給你一個有效15分鐘的令牌。您在15分鐘內完成的所有呼叫應該可以正常工作。 15分鐘後,我返回一個錯誤對象(包括代碼,消息,成功= false),但我也想知道應該返回什麼HTTP錯誤代碼?並且會使用HTTP錯誤代碼搞亂某些客戶端? (HTML5,iPhone,Android)。在這種情況下什麼被認爲是最佳實踐?令牌已過期 - JSON REST API - 錯誤代碼
回答
我搜索了OAuth 2規範,所有我能找到的是當它到期時它們會返回「無效令牌錯誤」。我沒有提及他們使用的HTTP代碼。但是,我會說你最安全的賭注就是使用400.
你應該返回一個401 Unauthorized
狀態碼。您可能另外提供超媒體以再次建立令牌
想想在web應用程序中會發生什麼。你去說一個銀行網站。如果未被授權,它會將您發送到登錄頁面。然後你登錄,你很好去一段時間。然後它到期,循環重複。
只是一個想法。
FWIW Facebook使用400與自定義JSON響應。我個人更喜歡401自定義JSON響應。
這裏是FB的響應體:根據規範rfc6750
{
"error": {
"message": "Error validating access token: Session has expired on Jul 17, 2014 9:00am. The current time is Jul 17, 2014 9:07am.",
"type": "OAuthException",
"code": 190,
"error_subcode": 463
}
}
東西告訴我,Facebook應該被視爲例外,而不是發展的指導原則。只是說。 – 2016-09-17 22:13:05
這是針對授權服務器還是資源提供者的Facebook調用?授權服務器應返回400:https://tools.ietf.org/html/rfc6749#section-5.2,但資源提供者應返回401 – 2017-10-07 21:04:30
- 「要OAuth 2.0授權框架:承載令牌使用」,https://tools.ietf.org/html/rfc6750,第8頁,第3.1節,資源服務器應該返回401: >
INVALID_TOKEN 提供的訪問令牌到期,撤銷,畸形,或 其他原因而無效。資源應該用 響應HTTP 401(未授權)狀態碼。客戶端MAY 請求新的訪問令牌並重試受保護的資源 請求。
- 1. Web Api令牌過期錯誤
- 2. DocuSign REST API:撤消令牌 - 錯誤「提交的令牌無效」
- 3. 使用JWT(JSON Web令牌)設置令牌的RESTful API過期
- 4. 錯誤:驗證令牌在Firebase中已過期
- 5. 錯誤驗證訪問令牌:會話已過期
- 6. Facebook的API訪問令牌:會話已過期
- 7. Facebook的API登錄錯誤 - 會話已過期驗證訪問令牌
- 8. OAuth2RestTemplate提供的訪問令牌已過期
- 9. OmniAuth Facebook過期令牌錯誤
- 10. REST API令牌認證
- 11. C代碼錯誤:預計';' 「{」令牌
- 12. jwt_auth_no_auth_header關於驗證WordPress REST API的錯誤JWT令牌
- 13. 已過期JWT令牌 - 如何刷新令牌
- 14. vk.com獲取令牌總是給access_token已過期
- 15. 來自REST API的dotmailer請求令牌
- 16. 刷新已過期Sharepoint的SAML令牌
- 17. IBM Watson令牌在一小時內過期。代碼刷新令牌?
- 18. Twitter API無效或過期令牌
- 19. 授權永久的令牌頭添加到POST JSON的REST API
- 20. Google Reader API令牌是否過期?
- 21. JSON Web令牌到期
- 22. 的API令牌驗證錯誤
- 23. 令牌驗證和過期
- 24. 驗證訪問令牌的錯誤:會話在unix時間已過期
- 25. WCF過期令牌?
- 26. SugarCRM REST api錯誤
- 27. 需要幫助找出錯誤「代碼無效或已過期」
- 28. salesforce rest api INVALID_SESSION_ID錯誤
- 29. 如何使用Rest API更新JSON文件中的令牌C#
- 30. iOS6.1 Facebook錯誤驗證訪問令牌:會話在unix時間已過期
+1,很好的問題。你有沒有找到一個很好的解決方案呢? (順便說一句,[netflix](http://developer.netflix.com/docs/read/HTTP_Status_Codes)和[linkedin](https://developer.linkedin.com/documents/handling-errors-invalid-tokens)都會返回401)。 – 2014-07-12 12:21:07
[會話令牌無效時應使用什麼狀態碼?]的可能重複(https://stackoverflow.com/questions/20613088/what-status-code-should-i-use-when-session-token-is - 無效) – 2017-10-07 09:58:12