[3] [DFN[[CODE(HTTP)@en[[[oauth_problem]]]]]] [[引数]]の値は、
問題を識別する短い文字列です [SRC[>>1]]。

* 仕様書

[REFS[
- [1] '''[CITE[OAuth / ProblemReporting]] ([TIME[2013-07-22 09:25:32 +09:00]] 版) <http://wiki.oauth.net/w/page/12238543/ProblemReporting>'''
- [7] [CITE[OAuth / ScalableOAuth]] ([TIME[2015-03-05 15:02:16 +09:00]] 版) <http://wiki.oauth.net/w/page/12238549/ScalableOAuth#NewOAuthProblemValues>
- [9] [CITE@en[Implementers' Draft: OAuth Session 1.0 Draft 1]] ([TIME[2008-08-22 09:10:13 +09:00]] 版) <http://oauth.googlecode.com/svn/spec/ext/session/1.0/drafts/1/spec.html#anchor5>
]REFS]

* 構文

[4] 値は、次のいずれかです [SRC[>>1]]。
[FIG(list)[
- [CODE[[[version_rejected]]]] は、指定された [CODE(HTTP)@en[[[oauth_version]]]]
に対応していないことを表します。 [CODE(HTTP)@en[[[oauth_acceptable_versions]]]]
[[引数]]も指定する[['''べき''']]です。
- [CODE[[[parameter_absent]]]] は、必須の[[引数]]が指定されていないことを表します。
[CODE(HTTP)@en[[[oauth_parameters_absent]]]] [[引数]]も指定する[['''べき''']]です。
- [CODE[[[parameter_rejected]]]] は、予期していない[[引数]]が指定されていたことを表します。
[CODE(HTTP)@en[[[oauth_parameters_rejected]]]] [[引数]]も指定する[['''べき''']]です。
- [CODE[[[timestamp_refused]]]] は、 [CODE(HTTP)@en[[[oauth_timestamp]]]]
の値が受け入れられないものであることを表します。 [CODE(HTTP)@en[[[oauth_acceptable_timestamps]]]]
[[引数]]も指定する[['''べき''']]です。
- [CODE[[[nonce_used]]]] は、使用済みの [CODE(HTTP)@en[[[oauth_nonce]]]]
値が指定されたことを表します。
- [CODE[[[signature_method_rejected]]]] は、指定された [CODE(HTTP)[[[oauth_signature_method]]]]
が受け入れられないことを表します。
- [CODE[[[signature_invalid]]]] は、指定された [CODE(HTTP)[[[oauth_signature]]]]
が非妥当であることを表します。
- [CODE[[[consumer_key_unknown]]]] は、指定された [CODE[[[oauth_consumer_key]]]]
が未知であることを表します。
- [CODE[[[consumer_key_rejected]]]] は、指定された [CODE[[[oauth_consumer_key]]]]
が永続的に受け入れられないことを表します。 (例えば[[ブラックリスト]]入りしている場合に使います。)
- [CODE[[[consumer_key_refused]]]] は、指定された [CODE[[[oauth_consumer_key]]]]
が一時的に受け入れられないことを表します。 (例えばアクセス頻度の規制に使います。)
- [CODE[[[token_used]]]] は、指定された [CODE[[[oauth_token]]]]
が使用済みであり使えないことを表します。
- [CODE[[[token_expired]]]] は、指定された [CODE[[[oauth_token]]]]
が[[満期]]して使えないことを表します。 [SRC[>>1, >>7]]
- [CODE[[[token_revoked]]]] は、指定された [CODE[[[oauth_token]]]] が [[revoke]]
済みで使えないことを表します。
- [CODE[[[token_rejected]]]] は、指定された [CODE[[[oauth_token]]]]
が受け入れられない (理由は指定しない) ことを表します。発行されたことのないトークンの場合や、
使用後消去されて記録がない場合が含まれます。
- [CODE[[[verifier_invalid]]]] は、指定された [CODE[[[oauth_verifier]]]]
が正しくないことを表します。
- [CODE[[[additional_authorization_required]]]] は、アクセス要求を[[認可]]する前に[[資源所有者]]から更なる承認が必要であることを表します。 [SRC[>>1, >>7, >>9]]
- [CODE[[[permission_unknown]]]] は、アクセス要求を認めるかどうか[[資源所有者]]が決めていないことを表します。[[資源所有者]]が[[認可]]の手続きを完了させる前に[[トークン要求]]が行われた時に使います。
- [CODE[[[permission_denied]]]] は、アクセス要求を[[資源所有者]]が拒んだことを表します。
- [CODE[[[user_refused]]]] は、[[資源所有者]] (大抵は[[資源所有者]]の [[IPアドレス]])
が一時的に[[鯖]]に受け入れられていないことを表します。[[資源所有者認可]]でも[[トークン要求]]でも使うことができます。[[鯖]]が[[要求]]の数と
[[IPアドレス]]でアクセス規制する時に使うことができます。
- [CODE[[[token_not_renewable]]]] [SRC[>>7]]
- [CODE[[[access_token_expired]]]] [SRC[>>9]]
]FIG]

[5] [[鯖]]はその他の値を使っては[['''なりません''']] [SRC[>>1]]。

[6] [[クライアント]]は他の値も受け入れられる[['''べきです''']] [SRC[>>1]]。

* 文脈

[8] この[[引数]]は、 [[OAuth 1.0]] でエラーが発生した時に使うことができます。

;; [[引数 (OAuth 1.0)]] を参照。

* 実装

[2] [CITE[OAuth 認証時のエラー一覧 - Hatena Developer Center]]
( ([TIME[2013-07-22 09:25:45 +09:00]] 版))
<http://developer.hatena.ne.jp/ja/documents/auth/apis/oauth/problems>

[FIG(quote)[
[FIGCAPTION[
[10] [CITE@ja[2-legged OAuthによるAPIアクセス << mixi Developer Center (ミクシィ デベロッパーセンター)]]
([TIME[2015-01-09 16:42:40 +09:00]] 版)
<http://developer.mixi.co.jp/appli/spec/mob/2-legged-oauth/>
]FIGCAPTION]

> 具体的なエラーの記載は、例えば以下のようになります。
> oauth_nonceの重複が検出されたとき: oauth_problem=nonce_used
> oauth_timestampが不正だったとき: oauth_problem=timestamp_refused&oauth_acceptable_timestamps=(許容開始時刻)-(許容終了時刻)

]FIG]


[FIG(quote)[
[FIGCAPTION[
[11] [CITE[認証と認可 — サイボウズ Live・API ドキュメント]]
([TIME[2015-01-23 16:20:44 +09:00]] 版)
<https://developer.cybozulive.com/doc/current/pub/authorize.html>
]FIGCAPTION]

> エラーを識別する文字列は oauth_problem に 設定されています。

]FIG]
