[12] [DFN[[CODE(URI)@en[[[response_type]]]]]] [[引数]]は、[[OAuth 2.0]]
[[認可エンドポイント]]が返すべき値の種別 ([[認可符号]]または[[アクセストークン]]) 
を指定するものです。

* 仕様書

[REFS[
- [1] [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-3.1.1>
- [7] [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-4.1.1>
- [9] [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-4.2.1>
- [11] [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.4>
- [19] [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.3>
- [20] [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.3>
- [4] [CITE[OAuth Parameters]] ([TIME[2015-01-24 07:59:42 +09:00]] 版) <http://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#endpoint>
- [21] [CITE@en[Final: OAuth 2.0 Multiple Response Type Encoding Practices]] ([TIME[2014-02-26 05:28:26 +09:00]] 版) <http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html>
]REFS]

* 意味

[2] [[認可エンドポイント]]の [DFN[[CODE(URI)@en[[[response_type]]]]]] [[引数]]は、
[[承諾型]]を指定するものです [SRC[>>1]]。

* 構文

[13] [CODE(URI)@en[[[response_type]]]] [[引数]]の値は、応答名を
[CODE(char)[[[U+0020]]]] で区切って1つ以上指定したものでなければ[['''なりません''']]
[SRC[>>11, >>20]]。応答名の順序は意味を持ちません [SRC[>>1, >>11]]。

[FIG(railroad)[
= 応答名
= *
== [CODE(char)[[[U+0020]]]]
== 応答名
]FIG]

;; [5] 応答名の重複も明示的には禁止されていません。

[14] 応答名は、1つ以上の[[ASCII英数字]]や [CODE[[[_]]]] で構成される[[文字列]]でなければ[['''なりません''']] [SRC[>>11, >>20]]。

[FIG(railroad)[
= +
== |
=== [[ASCII英数字]]
=== [CODE[[[_]]]]
]FIG]

[15] 応答名としては、次の値があります。
[FIG(short list)[
- [CODE(URI)@en[[[code]]]]
- [CODE(URI)@en[[[token]]]]
- [CODE(URI)@en[[[none]]]]
- [CODE(URI)@en[[[id_token]]]]
- [CODE(URI)@en[[[code]] [[token]]]]
- [CODE(URI)@en[[[code]] [[id_token]]]]
- [CODE(URI)@en[[[id_token]] [[token]]]]
- [CODE(URI)@en[[[code]] [[id_token]] [[token]]]]
- [CODE(URI)@en[granted_scopes]]
]FIG]

[16] この[[引数]]の値は [[IANA登録簿]] [SRC[>>4]] に登録できます [SRC[>>11, >>19]]。値の組も登録できますが、
異なる順序の値の組が登録されていれば、重複して登録することはできません [SRC[>>11]]。

;; [17] 順序は意味を持たないと規定されているので、 [[IANA登録簿]]に示された順序で指定しなければならないわけではないようです。

;; [3] 個別の登録とは別に組を登録することができるようです。登録されない限り、
個々が登録されていても組み合わせの意味は定義されないようです。

;; [18] 登録されていない値やその組み合わせの使用が禁止されているわけではなさそうです。
他の[[引数]]とは違って [[URL]] を使うことは認められていないようです。

* 文脈

[8] [[認可エンドポイント]]では、 [CODE(URI)@en[[[response_type]]]]
[[引数]]を指定しなければ[['''なりません''']] [SRC[>>7, >>9]]。

* 処理

[6] [[認可エンドポイント]]を参照。

* 関連

[10] [[トークンエンドポイント]]においては、 [CODE(URI)@en[[[grant_type]]]]
[[引数]]が[[承諾型]]の指定に用いられます。

* メモ

[FIG(quote)[
[FIGCAPTION[
[22] [CITE@ja[Manually Build a Login Flow - Facebook Login]]
([TIME[2016-03-03 14:18:12 +09:00]] 版)
<https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow>
]FIGCAPTION]

> granted_scopes. Returns a comma-separated list of all Permissions granted to the app by the user at the time of login. Can be combined with other response_type values. When combined with token, response data is included as a URL fragment, otherwise included as a URL parameter.

]FIG]
