class Baidu::Client

Attributes

access_token[RW]

OAuth2::AccessToken

Store authorized infos

api_key[RW]
api_secret[RW]

Public Class Methods

new(&block) click to toggle source
# File lib/baidu/client.rb, line 20
def initialize(&block)
  instance_eval(&block)
end

Public Instance Methods

authorize_url(opts = {}) click to toggle source

OAuth2 authorize_url

redirect or open this URL for login in Baidu website

Params:

  • opts Hash

    • redirect_uri String - default Baidu::DEFAULT_REDIRECT_URI,URL with logined redirect back

Rails example:

class SessionController
  def oauth
    redirect_to $baidu.authorize_url(redirect_uri: callback_session_url)
  end

  def callback
    auth_code = params[:code]
    $baidu.token!(auth_code)
  end
end
# File lib/baidu/client.rb, line 59
def authorize_url(opts = {})
  opts[:redirect_uri] ||= DEFAULT_REDIRECT_URI
  # scope:非必须参数,以空格分隔的权限列表,若不传递此参数,代表请求用户的默认权限。关于权限的具体信息请参考“权限列表”。
  opts[:scope] ||= "basic netdisk super_msg"
  oauth_client.auth_code.authorize_url(scope: opts[:scope], redirect_uri: opts[:redirect_uri])
end
oauth_client() click to toggle source

OAuth2::Client instance with baido OAuth developer.baidu.com/wiki/index.php?title=docs/oauth/application

# File lib/baidu/client.rb, line 27
def oauth_client
  @oauth_client ||= OAuth2::Client.new(api_key, api_secret,
                                      site: "https://openapi.baidu.com",
                                      authorize_url: "/oauth/2.0/authorize",
                                      token_url: "/oauth/2.0/token")

end
refresh_token!(refresh_token) click to toggle source

OAuth refresh_token method

Refresh tokens when token was expired

Params:

# File lib/baidu/client.rb, line 96
def refresh_token!(refresh_token)
  old_token = OAuth2::AccessToken.new(oauth_client,'', refresh_token: refresh_token)
  self.access_token = old_token.refresh!
end
revert_token!(access_token) click to toggle source

Revert access_token info with String access_token

You can store access_token.token in you database or local file, when you restart you app, you can revert access_token instance by that token

Params:

# File lib/baidu/client.rb, line 110
def revert_token!(access_token)
  self.access_token = OAuth2::AccessToken.new(oauth_client, access_token)
end
token() click to toggle source
# File lib/baidu/client.rb, line 83
def token
  @token ||= access_token.token
end
token!(authorization_code,opts = {}) click to toggle source

OAuth get_token method

This method will get access_token (OAuth2::AccessToken) … and save in Baidu instance

Params:

  • authorization_code - Authorization Code in callback URL

  • opts

    • redirect_uri String - default Baidu::DEFAULT_REDIRECT_URI,URL with logined redirect back

# File lib/baidu/client.rb, line 78
def token!(authorization_code,opts = {})
  opts[:redirect_uri] ||= DEFAULT_REDIRECT_URI
  self.access_token = oauth_client.auth_code.get_token(authorization_code, redirect_uri: opts[:redirect_uri])
end

Private Instance Methods

get_response_json(api_url) click to toggle source
# File lib/baidu/client.rb, line 134
def get_response_json(api_url)
  JSON.parse(access_token.get(api_url).body)
end
query_params(params) click to toggle source

高级API列表

# File lib/baidu/client.rb, line 130
def query_params(params)
  params.merge({access_token: token}).to_query
end