class Baidu::OAuth::Flow::AuthorizationCode

采用Authorization Code获取Access Token的授权验证流程又被称为Web Server Flow, 适用于所有有Server端的应用,如Web/Wap站点、有Server端的手机/桌面客户端应用等。

@see developer.baidu.com/wiki/index.php?title=docs/oauth/authorization Authorization Code授权

Public Instance Methods

authorize_url(redirect_uri, params={}) click to toggle source

获取 Authorization URL @param [String] redirect_uri 授权后要回调的URI,即接收Authorization Code的URI。

如果用户在授权过程中取消授权,会回调该URI,并在URI末尾附上error=access_denied参数。
对于无Web Server的应用,其值可以是“oob”,此时用户同意授权后,
授权服务会将Authorization Code直接显示在响应页面的页面中及页面title中。
非“oob”值的redirect_uri按照如下规则进行匹配:
(1)如果开发者在“授权安全设置”中配置了“授权回调地址”,
则redirect_uri必须与“授权回调地址”中的某一个相匹配;
(2)如果未配置“授权回调地址”,redirect_uri所在域名必须与开发者注册应用时
所提供的网站根域名列表或应用的站点地址(如果根域名列表没填写)的域名相匹配。

@option params [String] :scope 以空格分隔的权限列表,若不传递此参数,代表请求用户的默认权限 @option params [String] :state 用于保持请求和回调的状态,授权服务器在回调时(重定向用户浏览器到“redirect_uri”时),

会在Query Parameter中原样回传该参数。OAuth2.0标准协议建议,利用state参数来防止CSRF攻击

@option params [String] :display 登录和授权页面的展现样式,默认为“page” @option params [Boolean] :force_login true 表示加载登录页时强制用户输入用户名和口令,不会从cookie中读取百度用户的登陆状态 @option params [Boolean] :confirm_login true 表示且百度用户已处于登陆状态,会提示是否使用已当前登陆用户对应用授权 @return [String] @see developer.baidu.com/wiki/index.php?title=docs/oauth/authorization Authorization Code授权 @see developer.baidu.com/wiki/index.php?title=docs/oauth/list 权限列表 @see developer.baidu.com/wiki/index.php?title=docs/oauth/set 页面设置 @see developer.baidu.com/wiki/index.php?title=docs/oauth/redirect 授权回调地址

# File lib/baidu/oauth/flow/authorization_code.rb, line 52
def authorize_url(redirect_uri, params={}); super end
get_token(code, redirect_uri) click to toggle source

通过获得的 Authorization Code,换取一个 Access Token

@note 每一个 Authorization Code 的有效期为10分钟,并且只能使用一次,再次使用将无效。

如果用户在此页面同意授权,授权服务则将重定向用户浏览器到应用所指定的“redirect_uri”, 并附带上表示授权服务所分配的 Authorization Code 的 code 参数,以及 state 参数(如果请求authorization code时带了这个参数)。

@param [String] code 所获得的 Authorization Code (redirect_uri 附带的 code 参数) @param [String] redirect_uri 该值必须与获取 Authorization Code 时传递的 “redirect_uri” 保持一致 @return [Baidu::Session] @see developer.baidu.com/wiki/index.php?title=docs/oauth/authorization Authorization Code授权 @see developer.baidu.com/wiki/index.php?title=docs/oauth/overview Access Token生命周期

Calls superclass method Baidu::OAuth::Flow::Tokenable#get_token
# File lib/baidu/oauth/flow/authorization_code.rb, line 29
def get_token(code, redirect_uri); super end

Private Instance Methods

authorize_query() click to toggle source
# File lib/baidu/oauth/flow/authorization_code.rb, line 56
def authorize_query
  { response_type: 'code', display: 'page' }
end
token_body() click to toggle source
# File lib/baidu/oauth/flow/authorization_code.rb, line 60
def token_body
  { grant_type: 'authorization_code' }
end