2012-01-13 21 views
32

私はJSON REST APIを持っています。 15分間有効なトークンを与えるハンドシェイクがあります。 15分以内にあなたがするすべての通話はOKです。 15分後にエラーオブジェクト(コード、メッセージ、成功= falseを含む)を返していますが、HTTPエラーコードが返されるべきものは何ですか?そして、HTTPエラーコードを使用して特定のクライアントを混乱させるでしょうか? (HTML5、iPhone、Android)このシナリオでベストプラクティスとは何でしょうか?トークンの期限切れ - JSON REST API - エラーコード

+4

+1、すばらしい質問です。あなたはこれに対して良い解決策を見つけましたか? (btw - [netflix](http://developer.netflix.com/docs/read/HTTP_Status_Codes)と[linkedin](https://developer.linkedin.com/documents/handling-errors-invalid-tokens)の両方が返されますa 401)。 –

+0

可能性のある重複した[セッショントークンが無効である場合にどのようなステータスコードは、私が使用する必要がありますか?](https://stackoverflow.com/questions/20613088/what-status-code-should-i-use-when-session-token-is - 無効) –

答えて

3

私はOAuthの2仕様を検索し、私は見つけることができるすべては、それが期限切れになったとき、彼らは「無効なトークンエラー」を返すということです。彼らが使っているHTTPコードを見つけることはできません。しかし、私はあなたの最も安全な賭けは、ちょうどあなたが401 Unauthorizedステータスコードを返すべき400

37

を使用することであると言うでしょう。あなたは、さらに再び

がWebアプリで何が起こるかを考えてみトークンを確立するためのハイパーメディアを提供するかもしれません。あなたは銀行のサイトを言うために行く。承認されていない場合は、ログインページに移動します。それからあなたはログインして、あなたは一度行くのが良いです。その後、期限が切れ、サイクルが繰り返されます。

単なる考えです。

5

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 
    } 
} 
+8

Facebookは開発のガイドラインではなく、例外として扱われるべきだと私に伝えています。ただ言って。 –

+0

承認サーバーまたはリソースプロバイダーに関するFacebookへの呼び出しですか?承認サーバーは400:https://tools.ietf.org/html/rfc6749#section-5.2を返しますが、リソースプロバイダーは401を返す必要があります –

7

スペックrfc6750に従って - "OAuth 2.0の認証フレームワーク:ベアラートークンの使用"、https://tools.ietf.org/html/rfc6750、P.8、セクション3.1、リソースサーバーは401を返す必要があります:提供 >

invalid_tokenアクセストークン、有効期限が切れ、失効、不正な、またはその他の理由で 無効です。リソースは HTTP 401(Unauthorized)ステータスコードで応答すべきです(SHOULD)。クライアントMAY が新しいアクセストークンを要求し、保護されたリソース 要求を再試行します。

関連する問題