08、OAuth 2.0 授权码授权
授权码授权总共由2个请求和2个响应组成。一个授权请求+响应,和一个令牌请求+响应。 授权请求 授权请求被发送到授权端点以获取一个授权码。这是请求中用到的参数:
response_type | 必须。必须被设置到代码里 |
---|---|
client_id | 必须。当客户端被注册时,授权服务器要标识的客户端。 |
redirect_uri | 可选。通过客户端注册的重定向URI。 |
scope | 可选。请求可能的作用域。 |
state | 可选(推荐的)。任何需要被传递到客户端请求的URI客户端的状态。 |
授权响应 授权响应包含了需要用来获取访问令牌的授权码。这是响应包括的参数:
code | 必须。授权码 |
---|---|
state | 如果出现在请求中,必须包含。如果有的话,和客户端请求中发送的state参数一样。 |
授权错误
如果授权期间发生错误,两种情况会发生。 第一种情形是,客户端没有被授权或识别。比如,请求中错误的重定向URI。这种情况下,授权服务器没有必要重定向资源拥有者到重定向URI,而是通知资源拥有者发生了错误。 第二种情形是,客户端被正确地授权了,但是其他某些事情失败了。这种情况下下面地错误响应会被发送到客户端,包括在重定向URI中:
error | 必须。必须是预先定义的错误码之一。参见规范查查这些错误码及它们的含义。 |
---|---|
error_description | 可选。一段UTF-8编码的描述错误的文本。适用于开发者,而不是最终用户。 |
error_uri | 可选。 一个指向包含人类可读的错误信息网页的URI。 |
state | 必须。如果出现在授权请求期间,和请求中的state参数一样。 |
令牌请求
一旦授权码被获取到了,客户端可以用它获取访问令牌。这是访问令牌请求参数:
grant_type | 必须。必须被设置到授权码中。 |
---|---|
code | 必须。被授权服务器接收到的授权码。 |
redirect_uri | 必须。如果请求URI包括在授权请求中,之后必须是相同的。 |
令牌响应 访问令牌请求的响应是包含访问令牌及一些更多信息的JSON字符串:
{ "access_token" : "...",
"token_type" : "...",
"expires_in" : "...",
"refresh_token" : "...",
}
access_type属性是授权服务器分配的访问令牌。 token_type是被授权服务器分配的令牌类型。 expires_in属性是指访问令牌过多少秒后,就不再有效。访问令牌过期值是可选的。 refresh_token属性包含令牌过期后刷新的令牌。刷新的令牌用于,一旦响应返回的不再有效时,包含一个新的访问令牌。