class Oauth::Ok::OkAuth

Class for OAuth 2.0 on odnoklassniki.ru/

Public Class Methods

getUrlOptions() click to toggle source

Getting auth params

return array

# File lib/oauth/ok.rb, line 39
def OkAuth.getUrlOptions
        @@auth_url_options
end
new(auth_options) click to toggle source

Class constructor

auth_options - array aplication options

return string

# File lib/oauth/ok.rb, line 28
def initialize(auth_options)
        @options = OkAuth.getUrlOptions
        @options = @options.merge(auth_options)
end

Public Instance Methods

getAuthUrl() click to toggle source

Getting user auth URL

return string

# File lib/oauth/ok.rb, line 49
def getAuthUrl
        URI::HTTP.build(
                :host  => @options['auth_host'],
                :path  => @options['auth_page'],
                :query => {
                        :client_id     => @options['client_id'],
                        :scope         => @options['scope'],
                        :response_type => "code",
                        :redirect_uri  => @options['redirect_uri'],
                }.to_query
        ).to_s
end
getUserData(code) click to toggle source

Gettion user data

code - string access code for getting user info

return array

# File lib/oauth/ok.rb, line 83
def getUserData(code)
        accessUri = URI::HTTP.build(
                :host  => @options['api_host'],
                :path  => @options['access_token_path'],
                :query => {
                        :code          => code,
                        :redirect_uri  => @options['redirect_uri'],
                        :grant_type    => "authorization_code",
                        :client_id     => @options['client_id'],
                        :client_secret => @options['client_secret'],
                }.to_query
        )

        accessRequest = JSON.parse Net::HTTP.post_form(accessUri, []).body

        getCurrentUserUri = URI::HTTP.build(
                :host  => @options['api_host'],
                :path  => @options["method_url_path"],
                :query => {
                        :access_token    => accessRequest['access_token'],
                        :application_key => @options['application_key'],
                        :method          => "users.getCurrentUser",
                        :sig             => self.getSig(accessRequest['access_token'])
                }.to_query
        )

        JSON.parse Net::HTTP.get_response(getCurrentUserUri).body
end

Protected Instance Methods

getSig(access_token) click to toggle source

Getting SIG for request method “users.getCurrentUser”

access_token - string access token for requests api methods

return string

# File lib/oauth/ok.rb, line 70
def getSig(access_token)
        methodStr = 'application_key=' + @options['application_key'] + 'method=users.getCurrentUser'
        Digest::MD5.hexdigest(methodStr + Digest::MD5.hexdigest(access_token + @options['client_secret']))
end