Facebook API
A simple, lightweight Ruby library for accessing the Facebook REST API. Currently used in Facebook Connect applications, but could easily be extended for use in canvas applications.
Install
gem install facebook_api
Usage
require 'facebook_api'
FacebookApi.configure do |config|
config.api_key = '55e9919b8c017abe484c9fb336dffb90'
config.secret_key 'fc881eb66493e0b845a3528c018cdd56'
config.canvas_page_name = 'crowdfm_publisher'
config.callback_url = 'http://crowd.fm/'
end
session = FacebookApi::Session.new(session_key, uid)
# Make REST API calls
response = session.call('Friends.get', :uid => '12345')
# Make calls with file attachments
response = session.call('Photos.upload', {:uid => '12345', :aid => '67890', :caption => 'your caption'}, File.new('/path/to/image.jpg))
# Make fql calls
response = session.call_fql('SELECT page_id FROM page_admin WHERE uid="12345"')
Both FacebookApi::Session#call and FacebookApi::Session#call_fql will generally return a hash, parsed from the JSON returned by Facebook. However, for some API calls Facebook returns non-valid JSON, usually either ‘true’, ‘false’ or a string literal (e.g. ‘12345’). In these cases, the return value from #call and #call_fql will be either true, false or the string literal respectively.
How to use in a Rails application
With a couple of simple methods, you can make Facebook sessions available to you in your controllers and views:
class ApplicationController < ActionController::Base
# Requiring a valid facebook connect session for your controller actions with a before_filter:
before_filter :require_facebook_session, :except => [:login]
# Make the facebook_session available in your views by making it a helper_method:
helper_method :facebook_session
private
def facebook_session
@facebook_session ||=
end
def
if FacebookApi.()
FacebookApi::Session.new(["#{FacebookApi.api_key}_session_key"], ["#{FacebookApi.api_key}_user"])
end
end
def require_facebook_session
unless facebook_session
redirect_to facebook_connect_path
end
end
end
Acknowledgements
Thanks to Mike Mangino of Facebooker and Travis Reeder of MiniFb for inspiration.
Copyright
Copyright © 2010 Tekin Suleyman. See LICENSE for details.