Sha256: 7deaf30aad97a6c52e0bbc0eed700accc438d83cf58ffe10ee88d9fc3d622179

Contents?: true

Size: 1.48 KB

Versions: 3

Compression:

Stored size: 1.48 KB

Contents

# -*- encoding : utf-8 -*-
module Douban
  # Defines HTTP request methods
  module OAuth
    # Return URL for OAuth authorization
    def authorize_url(options={})
      options[:response_type] ||= "code"
      params = access_token_params.merge(options)
      connection.build_url("https://www.douban.com/service/auth2/auth", params).to_s
    end

    # Return an access token from authorization
    def get_access_token(code, options={})
      options[:grant_type] ||= "authorization_code"
      params = access_token_params.merge(options)
      response = post("https://www.douban.com/service/auth2/token",
                        params.merge(:code => code),
                        raw=false)
    end
    
    # Refresh you access token, see OAuth2 spec for more infomation
    # @see http://developers.douban.com/wiki/?title=oauth2
    # @note 返回新的access_token和refresh_token的同时, 它修改client的access_token和refresh_token
    def refresh(options={})
      options[:grant_type] ||= "refresh_token"
      params = access_token_params.merge(options)
      response = post("https://www.douban.com/service/auth2/token",
                        params.merge(:refresh_token => refresh_token),
                        raw=false)
      @access_token, @refresh_token = response[:access_token], response[:refresh_token]

      response
    end
    
    private

    def access_token_params
      {
        :client_id => client_id,
        :client_secret => client_secret
      }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
douban_api-0.1.6 lib/douban_api/oauth.rb
douban_api-0.1.5 lib/douban_api/oauth.rb
douban_api-0.1.4 lib/douban_api/oauth.rb