module TinyFB

Constants

API_URL

Public Class Methods

access_token(client_id,redirect_uri,secret,code) click to toggle source

Returns the access token ( in a hash value )

This method handles the second step of the authorization process With the access code generated through the first step, we ask Facebook for the access token

options

  • client_id : Your Facebook Application ID

  • redirect_uri : The url of the page the user will be redirected to, meaning the page of your site that will receive the access token as a query parameter

  • secret : Your Facebook Application Secret

  • code : The code supplied by the first step

# File lib/tiny_fb_graph.rb, line 46
def self.access_token(client_id,redirect_uri,secret,code)
  url = API_URL +  'oauth/access_token'
  url << '?client_id=' + client_id.to_s
  url << '&redirect_uri=' + URI.escape(redirect_uri)
  url << '&client_secret=' + secret
  url << '&code=' + URI.escape(code)
  response = RestClient.get url
  params = {}
  params_array = response.split("&")
  params_array.each do |param|
      p = param.split("=")
      params[p[0]] = p[1]
  end
  params
end
login_url(client_id,redirect_uri,scope = nil ) click to toggle source

Returns the Facebook Login URL

This method handles the first step of the authorization process After Clicking on that Link, the user will authenticate and/or authorize your application on the Facebook website

He will be then redirected to your site with a code ( in a query parameter ) the access_token method will then use that code to request the access token

parameters

  • client_id : Your Facebook Application ID

  • redirect_uri : The url of the page the user will be redirected to, meaning the page of your site that will get the code query paramater and use it to ask for the access_token

  • scope (optional ) : a string made of comma separated extended permissions, ex: “publish_stream,offline_access”

example

TinyFB.login_url(112233445566778,"http://localhost:3000")
=> "https://graph.facebook.com/oauth/authorize?client_id=112233445566778&redirect_uri=http://localhost:3000"
# File lib/tiny_fb_graph.rb, line 26
def self.login_url(client_id,redirect_uri,scope = nil )
  url = API_URL + 'oauth/authorize'
  url << '?client_id=' + client_id.to_s
  url << '&redirect_uri=' + URI.escape(redirect_uri)
  url << '&scope=' + scope if scope
  url
end
node(path,token,params = {}) click to toggle source

Returns information from the Facebook Graph

The raw_node returns the raw JSON response while the node returns a Ruby Hash

parameters

  • path : the path to the desired node

  • token : the access token

  • params ( optional ) : additional parameters

example

TinyFB.node 'me',"xxxxxxxx"
=> A Hash ( see the Facebook Graph API Documentation )
# File lib/tiny_fb_graph.rb, line 76
def self.node(path,token,params = {}) 
  JSON.parse raw_node(path,token,params)
end
post(path,token,params ={}) click to toggle source

Posts data to the Facebook Graph

parameters

  • path : the path you are publishing to

  • token : the access token

  • params ( optional ) : additional parameters

example

TinyFB.post "me/feed", "xxxx" , :message => "message"
# File lib/tiny_fb_graph.rb, line 97
def self.post(path,token,params ={})
  params = params.merge! :access_token => token
  response = RestClient.post API_URL + path, params
  JSON.parse response

rescue RestClient::Exception => e
          error_hash = JSON.parse(e.http_body)
          raise FaceBookError.new(e.http_code, "#{error_hash["error"]["type"]}: #{error_hash["error"]["message"]}")
end
post_file(path,token,file_path,params = {}) click to toggle source

Posts a file to the Facebook Graph

Returns the Hash converted JSON response

parameters

  • path : the path to the node you want to post the file to

  • token : the access token

  • params ( optional ) : additional parameters

example

TinyFB.post "me/photos", "xxxx" ,"/path/to/image.jpg"
# File lib/tiny_fb_graph.rb, line 118
def self.post_file(path,token,file_path,params = {})
  params = params.merge! :access_token => token,:source => File.new(file_path,'rb')
  response = RestClient.post API_URL + path, params
  JSON.parse response

rescue RestClient::Exception => e
          error_hash = JSON.parse(e.http_body)
          raise FaceBookError.new(e.http_code, "#{error_hash["error"]["type"]}: #{error_hash["error"]["message"]}")
end
raw_node(path,token,params = {}) click to toggle source
# File lib/tiny_fb_graph.rb, line 79
def self.raw_node(path,token,params = {})
  params = params.merge! :access_token => token
  response = RestClient.get API_URL + path, :params =>  params

rescue RestClient::Exception => ex
          res_hash = JSON.parse(ex.http_body)
          raise FaceBookError.new(ex.http_code, "#{res_hash["error"]["type"]}: #{res_hash["error"]["message"]}")
end