Sha256: efc3f1de4c77de052c031fd282408b6a83dc5283626a250a362ad94fb7a5cf84

Contents?: true

Size: 1.49 KB

Versions: 1

Compression:

Stored size: 1.49 KB

Contents

require 'open-uri'
require 'uri'
require 'json'

module Facebokr
  GRAPH_URI = "https://graph.facebook.com"

  class App
    #
    # @param app_id [String] Facebook application id
    # @param app_secret [String] Facebook application secret
    #
    def initialize(app_id, app_secret)
      @app_id     = app_id
      @app_secret = app_secret
    end

    def access_token
      @access_token ||= begin
        uri = og_uri("oauth/access_token", :client_id => @app_id, :client_secret => @app_secret, :grant_type => "client_credentials")
        response = open(uri).read
        response.gsub(/^access_token=/, "")
      end
    end

    # Creates a test user for given Facebook application
    #
    # @param options [Hash] Facebook test user options
    # @option installed [Boolean] Automatically install application for test user
    # @option permissions [String] Comma-separated list of FB OG permissions
    #
    def create_test_user(options = {})
      uri = og_uri(@app_id, "accounts/test-users", options.merge(:access_token => access_token))
      response = JSON.parse(open(uri).read)
      response["data"].first
    end

    private

    def og_uri(*path_elements)
      params = path_elements.last.is_a?(Hash) ? path_elements.pop : {}
      wrapped_path = path_elements.join("/").gsub(/(.*)/, "/\\1").squeeze("/").chop
      query = params.map { |k, v| "#{k}=#{URI.escape v.to_s}" }.join("&")
      URI.join(GRAPH_URI, wrapped_path).tap { |u| u.query = query unless String(query).empty? }
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
facebokr-0.0.2 lib/facebokr/app.rb