[1] [[OAuth 2.0]] の[DFN[[RUBYB[[[引数]]]@en[parameter]]]]は、[[要求]]の諸条件を記述したり、
[[応答]]の諸事項を記述したりする名前と値の組です。

* 仕様書

[REFS[
- [3] [CITE@en[RFC 6749 - The OAuth 2.0 Authorization Framework]] ([TIME[2014-12-15 14:15:35 +09:00]] 版) <http://tools.ietf.org/html/rfc6749#section-8.2>
- [10] [CITE@en[RFC 6749 - The OAuth 2.0 Authorization Framework]] ([TIME[2014-12-15 14:15:35 +09:00]] 版) <http://tools.ietf.org/html/rfc6749#section-8.3>
- [12] [CITE@en[RFC 6749 - The OAuth 2.0 Authorization Framework]] ([TIME[2014-12-15 14:15:35 +09:00]] 版) <http://tools.ietf.org/html/rfc6749#section-11.2>
- [13] [CITE@en[RFC 6749 - The OAuth 2.0 Authorization Framework]] ([TIME[2014-12-15 14:15:35 +09:00]] 版) <http://tools.ietf.org/html/rfc6749#appendix-A.18>
- [8] [CITE[OAuth Parameters]] ([TIME[2015-01-24 07:59:42 +09:00]] 版) <http://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#parameters>
]REFS]

* 構文

[2] [[引数]]がどのように記述されるかは、使われる場面によって異なっています。
[[OAuth 2.0]] では次のような方法の指定をすべてまとめて[[引数]]と呼んでいます。
[FIG(list)[
- [[要求URL]] の [[query]] の [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]] の名前と値の組
- [[リダイレクトURL]] の [[query]] の [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]] の名前と値の組
- [[リダイレクトURL]] の[[素片識別子]]の [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]] の名前と値の組
- [[要求本体]]の [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]] の名前と値の組
- [[応答本体]]の [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]] の名前と値の組
- [[応答本体]]の [[JSON]] の最上位 [[JSONオブジェクト]]の名前と値の組
]FIG]

[4] [[引数]]名は、[[ASCII英数字]]、[CODE[[[-]]]]、[CODE[[[.]]]]、[CODE[[[_]]]]
の1文字以上の[[文字列]]でなければ[['''なりません''']] [SRC[>>3, >>13]]。

[5] [[引数]]の値の構文は、名前に依存して決まります。構文は明確に定義されていなければ[['''なりません''']] [SRC[>>3]]。

[6] [[IANA登録簿]]に登録されていない [[vendor]] 特有の拡張は、
[CODE[companyname_]] のような [[vendor prefix]] から始まる[['''べきです''']] [SRC[>>3]]。

;; [7] [[OAuth 1.0]] とは違って [[OAuth 2.0]] では標準の[[引数]]名には共通の接頭辞のようなものがありません。
非標準で [[vendor prefix]] を持たない[[引数]]を使うことも一般には禁止されていないようです。

[11] 拡張の[[承諾型]]で追加の[[引数]]を使う時は、登録しなければ[['''なりません''']] [SRC[>>10]]。

* 引数の一覧

[20] [[URL query]] では次の[[引数]]が使われます。 (このうちのいくつかは [[OpenID Connect]]
の [[JWT]] [[要求オブジェクト]]の[[引数]]としても使うことができます。)
[FIG(short list)[
- [CODE(URI)@en[[[access_token]]]]
- [CODE(URI)@en[[[access_type]]]]
- [CODE(URI)@en[[[admin_consent]]]]
- [CODE(URI)@en[[[api_key]]]]
- [CODE(URI)@en[[[approval_prompt]]]]
- [CODE(URI)@en[[[callback]]]]
- [CODE(URI)@en[[[cancel_url]]]]
- [CODE(URI)@en[[[client_id]]]]
- [CODE(URI)@en[[[code]]]]
- [CODE(URI)@en[[[code_challenge]]]]
- [CODE(URI)@en[[[code_challenge_method]]]]
- [CODE(URI)@en[[[disable_signup]]]]
- [CODE(URI)@en[[[domain_hint]]]]
- [CODE(URI)@en[error][error=]]
- [CODE(URI)@en[[[error_description]]]]
- [CODE(URI)@en[[[error_uri]]]]
- [CODE(URI)@en[error_reason]]
- [CODE(URI)@en[[[fb_exchange_token]]]]
- [CODE(URI)@en[[[force_reapprove]]]]
- [CODE(URI)@en[[[hd]]]]
- [CODE(URI)@en[[[immediate]]]]
- [CODE(URI)@en[[[include_granted_scopes]]]]
- [CODE(URI)@en[[[lang]]]]
- [CODE(URI)@en[[[language]]]]
- [CODE(URI)@en[[[openid.realm]]]]
- [CODE(URI)@en[[[openid2_realm]]]]
- [CODE(URI)@en[[[request]]]]
- [CODE(URI)@en[[[request_uri]]]]
- [CODE(URI)@en[[[response_mode]]]]
- [CODE(URI)@en[[[response_type]]]]
- [CODE(URI)@en[[[redirect_uri]]]]
- [CODE(URI)@en[[[scope]]]]
- [CODE(URI)@en[[[session_state]]]]
- [CODE(URI)@en[[[show_dialog]]]]
- [CODE(URI)@en[[[state]]]]
- [CODE(URI)@en[[[team]]]]
- [CODE(URI)@en[[[token]]]]
- [CODE(URI)@en[[[token_type_hint]]]]
- [CODE(URI)@en[[[nonce]]]]
- [CODE(URI)@en[[[display]]]]
- [CODE(URI)@en[[[prompt]]]]
- [CODE(URI)@en[[[resource]]]]
- [CODE(URI)@en[[[max_age]]]]
- [CODE(URI)@en[[[ui_locales]]]]
- [CODE(URI)@en[[[id_token_hint]]]]
- [CODE(URI)@en[[[login_hint]]]]
- [CODE(URI)@en[[[acr_values]]]]
]FIG]

[21] [[素片識別子]]では次の[[引数]]が使われます。
[FIG(short list)[
- [CODE(URI)@en[[[access_token]]]]
- [CODE(URI)@en[[[code]]]]
- [CODE(URI)@en[[[expires_in]]]]
- [CODE(URI)@en[[[scope]]]]
- [CODE(URI)@en[[[state]]]]
- [CODE(URI)@en[[[token_type]]]]
- [CODE(URI)@en[[[id_token]]]]
- [CODE(URI)@en[[[id]]]]
- [CODE(URI)@en[[[instance_url]]]]
- [CODE(URI)@en[[[issued_at]]]]
- [CODE(URI)@en[[[signature]]]]
- [CODE(URI)@en[[[xoauth_yahoo_guid]]]]
]FIG]

[18] [[payload body]] の [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]]
では次の[[引数]]が使われます。
[FIG(short list)[
- [CODE(URI)@en[[[access_token]]]]
- [CODE(URI)@en[[[client_assertion]]]]
- [CODE(URI)@en[[[client_assertion_type]]]]
- [CODE(URI)@en[[[client_id]]]]
- [CODE(URI)@en[[[client_secret]]]]
- [CODE(URI)@en[[[code]]]]
- [CODE(URI)@en[[[code_verifier]]]]
- [CODE(URI)@en[[[format]]]]
- [CODE(URI)@en[[[grant_type]]]]
- [CODE(URI)@en[[[redirect_uri]]]]
- [CODE(URI)@en[[[token]]]]
- [CODE(URI)@en[[[token_type_hint]]]]
]FIG]

[22] [[payload body]] の [[JSON]] では次の[[引数]]が使われます。 (このうちのいくつかは非標準の拡張で [[XML]] や [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]] でも使われます。)
[FIG(short list)[
- [CODE@en[[[access_token]]]]
- [CODE@en[[[apiKey]]]]
- [CODE@en[[[assertion]]]]
- [CODE@en[[[correlation_id]]]]
- [CODE@en[[[device_id]]]]
- [CODE@en[[[token_type]]]]
- [CODE@en[[[error]]]]
- [CODE@en[[[error_description]]]]
- [CODE@en[[[error_message]]]]
- [CODE@en[[[error_uri]]]]
- [CODE@en[[[expires_in]]]]
- [CODE@en[[[expires_on]]]]
- [CODE(URI)@en[[[id]]]]
- [CODE(URI)@en[[[instance_url]]]]
- [CODE(URI)@en[[[issued_at]]]]
- [CODE(URI)@en[[[signature]]]]
- [CODE@en[[[refresh_token]]]]
- [CODE@en[[[resource]]]]
- [CODE@en[[[scope]]]]
- [CODE@en[[[session_nonce]]]]
- [CODE@en[[[timestamp]]]]
- [CODE@en[[[trace_id]]]]
- [CODE@en[[[user]]]]
- [CODE@en[[[user_id]]]]
- [CODE@en[[[xoauth_yahoo_guid]]]]
- [CODE@en[[[id_token]]]]
]FIG]

[9] [[IANA登録簿]] [SRC[>>8]] も用意されています [SRC[>>12]]。

[14] この他、 [CODE(HTTP)@en[[[Authorization:]] [[Bearer]]]] [[challenge]]
でもいくつかの[[引数]]が用いられます (そちらの項を参照)。