Web services 令牌已过期-JSON REST API-错误代码

Web services 令牌已过期-JSON REST API-错误代码,web-services,rest,api-design,Web Services,Rest,Api Design,我有一个JSON REST API。有一个握手会给你一个15分钟有效的令牌。你在这15分钟内打的所有电话都正常。15分钟后,我返回了一个错误对象(包括代码、消息、success=false),但我还想知道应该返回什么HTTP错误代码?使用HTTP错误代码会使某些客户机陷入混乱吗?(HTML5、iPhone、Android)。在这种情况下,什么是最佳做法?您应该返回401未经授权的状态代码。您还可以提供超媒体来再次建立令牌 想想在网络应用程序中发生了什么。你可以说是一个银行网站。如果未进行身份验证

我有一个JSON REST API。有一个握手会给你一个15分钟有效的令牌。你在这15分钟内打的所有电话都正常。15分钟后,我返回了一个错误对象(包括代码、消息、success=false),但我还想知道应该返回什么HTTP错误代码?使用HTTP错误代码会使某些客户机陷入混乱吗?(HTML5、iPhone、Android)。在这种情况下,什么是最佳做法?

您应该返回
401未经授权的状态代码。您还可以提供超媒体来再次建立令牌

想想在网络应用程序中发生了什么。你可以说是一个银行网站。如果未进行身份验证,它会将您发送到登录页面。然后你登录,你就可以去一段时间了。然后它过期,循环重复


只是想一想。

FWIW Facebook使用400和自定义JSON响应。我个人更喜欢401和自定义JSON响应

以下是FB的回应机构:

{
“错误”:{
“消息”:“验证访问令牌时出错:会话已于2014年7月17日上午9:00过期。当前时间为2014年7月17日上午9:07。”,
“类型”:“OAutheException”,
“代码”:190,
“错误_子代码”:463
}
}

根据规范rfc6750-“OAuth 2.0授权框架:承载令牌使用”,第8页,第3.1节,资源服务器应返回401: >

无效的\u令牌 提供的访问令牌已过期、吊销、格式不正确或无效 因其他原因无效。资源应以 HTTP 401(未经授权)状态代码。客户可以 请求新的访问令牌,然后重试受保护的资源 请求


+1、好问题。你有没有找到解决这个问题的好办法?(顺便说一句,两者都返回一个401)。可能重复@MichaelFredgeim这个问题已经存在older@FindOutIslamNow“可能的重复”是一种清理方法——关闭类似的问题,并保留一个最佳答案。日期不是必需的。看看你们是否同意它需要澄清,请投票表决一些告诉我Facebook应该被视为例外,而不是发展指南。只是说说而已。这是给Facebook打电话,是给授权服务器,还是给资源提供商?授权服务器应返回400:,但资源提供程序应返回401Note should vs.MUST。作为一个打电话的人,如果能依靠401,那就太好了。哦,好吧。