4.1.3. 访问令牌请求
客户端通过使用按附录B“application/x-www-form-urlencoded”格式在HTTP请求实体正文中发送下列UTF-8字符编码的参数向令牌端点发起请求:
- grant_type必需的。值必须被设置为“authorization_code”。
- code从授权服务器收到的授权码。
- redirect_uri必需的,若“redirect_uri”参数如4.1.1节所述包含在授权请求中,且他们的值必须相同。
- client_id必需的,如果客户端没有如3.2.1节所述与授权服务器进行身份认证。
如果客户端类型是机密的或客户端被颁发了客户端凭据(或选定的其他身份验证要求),客户端必须如 必需的,如果客户端没有如3.2.1节所述与授权服务器进行身份验证。
例如,客户端使用TLS发起如下的HTTP请求(额外的换行符仅用于显示目的):
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
授权服务器必须:
- 要求机密客户端或任何被颁发了客户端凭据(或有其他身份验证要求)的客户端进行客户端身份验证,
- 若包括了客户端身份验证,验证客户端身份,
- 确保授权码颁发给了通过身份验证的机密客户端,或者如果客户端是公开的,确保代码颁发给了请求中的“client_id”,
- 验证授权码是有效的,并
- 确保给出了“redirect_uri”参数,若“redirect_uri”参数如4.1.1所述包含在初始授权请求中,且若包含,确保它们的值是相同的。