JSON RESTAPI。15分間有効なトークンを提供するハンドシェイクがあります。15分間以内に行うすべての呼び出しは正常に機能します。エラーオブジェクト(コード、メッセージ、成功= falseを含む)を返していますが、どのHTTPエラーコードを返すべきか疑問に思っていましたか?また、HTTPエラーコードを使用すると特定のクライアントが台無しになりますか?(HTML5、iPhone、Android)このシナリオでベストプラクティスと見なされるものは何ですか?
401 Unauthorized
ステータスコードを返す必要があります。トークンを再度確立するハイパーメディアを追加で提供する場合があります
Webアプリで何が起こるか考えてください。銀行のサイトに行きます。認証されていない場合は、ログインページに移動します。その後、ログインすると、しばらく行くことができます。その後、有効期限が切れ、サイクルが繰り返されます。
ちょっとした考え。
仕様によると、rfc6750-「OAuth 2.0 Authorization Framework:Bearer Token Usage」、 https://tools.ietf.org/html/rfc675 、p。 8、セクション3.1、リソースサーバーは401を返す必要があります:>
invalid_token提供されたアクセストークンは、他の理由で有効期限が切れている、取り消されている、不正な形式、または無効です。リソースは、HTTP 401(Unauthorized)ステータスコードで応答する必要があります。クライアントは、新しいアクセストークンを要求し、保護されたリソース要求を再試行できます。
FWIW Facebookは、カスタムJSON応答で400を使用します。個人的には、カスタムJSONレスポンスを使用した401を好みます。
FBの応答本文は次のとおりです。
{
"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
}
}
OAuth 2の仕様を検索しましたが、有効期限が切れると "Invalid Token Error"が返されることしかわかりませんでした。使用しているHTTPコードについては言及していません。ただし、最も安全な方法は400を使用することです。