h2. FBGRaph
p. Facebook Open Graph API Gem for Rails 3.
h2. Resources
* "View RDoc on RDoc.info":http://rdoc.info/projects/nsanta/fbgraph
* "View Source on GitHub":http://github.com/nsanta/fbgraph
* "Report Issues on GitHub":http://github.com/nsanta/fbgraph/issues
h2. Installation
notextile. gem install fbgraph
p. Be sure to require it
notextile. require "fbgraph"
p. or add this line into Gemfile for Rails 3
notextile. gem "fbgraph"
h2. Example Apps
"Rails 3 Example":http://github.com/nsanta/fbgraph_example
h2. Usage
p. FBGraph supports the most (no analytics yet) features of Facebook Open Graph API: developers.facebook.com/docs/reference/api/
h3. Initialization
p. Without a token (for authorization)
notextile. client = FBGraph::Client.new(:client_id => 'client_id',:secret_id =>'secret_id')
p. With a token
notextile. client = FBGraph::Client.new(:client_id => 'client_id',:secret_id =>'secret_id' ,:token => token)
p. All methods are chainable
Examples:
notextile. client.selection.me.photos.until(Time.now.to_s).since(3.days.ago).limit(10).info
notextile. client.selection.user('id').videos.offset(10).info
notextile. client.search.query('q').on('users').limit(20).info
h3. Rails config file
h2. TODO
h3. Authorization
h4. client.authorization.authorize_url
p. returns the authorize url
notextile. redirect_to client.authorization.authorize_url(:redirect_uri => callback_url , :scope => 'email,user_photos,friends_photos')
h4. client.authorization.process_callback
p. process the callback and returns the access token
notextile. access_token = client.authorization.process_callback(params[:code], :redirect_uri => callback_url)
h3. Exchange Sessions
h2. TODO
h3. Canvas
Facebook send a segned_request as a parameter. Can be decoded with the method parse_signed_request of FBGraph::Canvas module
> FBGraph::Canvas.parse_signed_request(params[:signed_request])
h3. Selection
h4. Accessing objects with connection types.
p. All objects and their connections can be accesed
Examples:
notextile. client.selection.me.home.info!
notextile. client.selection.user('id').photos.info!
notextile. client.selection.photo('id').comments.info!
notextile. client.selection.page('id').info!
p. Also you can get results of more than 1 objects
Example:
notextile. client.selection.user([id1,id2,id3]).info!
h4. client.selection.info!
p. request with GET for information and return the response parsed with JSON. You can disable the parsing passing false as a first and unique parameter
notextile. user_info = client.selection.me.info!
h3. Publishing
h4. client.selection.publish!
p. request with POST for publishing and return the response parsed with JSON. You can disable the parsing passing false as a first and unique parameter
notextile. client.selection.post('id').comments.params(:message => 'comment test').publish!
p. OR
notextile. client.selection.post('id').comments.publish!(:message => 'comment test')
h3. Deletion
h4. client.selection.delete!
p. request with DELETE for deletion and return the response parsed with JSON. You can disable the parsing passing false as a first and unique parameter
notextile. client.selection.post('id').delete!
h3. Picture
h4. client.selection.picture
p. return the url of the object picture
notextile. client.selection.me.picture
h3. Paging
h4. client.selection.limit
notextile. client.selection.me.photos.limit(3).info!
h4. client.selection.offset
notextile. client.selection.me.photos.offset(10).info!
h4. client.selection.until
notextile. client.selection.me.photos.until(Time.now.to_s).info!
h4. client.selection.since
notextile. client.selection.me.photos.since(3.days.ago).info!
h3. Search
h4. client.search.query('query').info!
p. Get the search results
notextile. results = client.search.query('facebook').info!
h4. client.search.query('query')on('type').info!
p. Get the search results by type
notextile. results = client.search.query('facebook').on('home').info!
h3. RealTime Updates
h4. client.realtime.user
h4. client.realtime.permissions
h4. client.realtime.errors
p. Set the object to be subscribed, modified or unsubscribed
h4. client.realtime.fields('email,picture')
p. Set the objects fields
h4. client.realtime.callback_url(url)
p. Set the callback url
h4. client.realtime.verify_token(token)
p. Set the verify token (optional)
h4. client.realtime.subscribe!
p. Send the request for add/modify a subscription for realtime Updates.
Examples:
notextile. results = client.realtime.user.fields('email,picture').callback_url(url).verify_token('token').subscribe!
notextile. results = client.realtime.permissions.fields('read_stream').callback_url(url).subscribe!
If you want delete a subscirpition, you can use the delete! method.
Examples:
notextile. results = client.realtime.user.delete!
h3. Analytics
h4. TODO
h3. Advanced
h4. not documented yet
h2. Contributions
p. Just do a pull request with the repo in sync.
h2. Maintainers
"Nicolas Santa":http://github.com/nsanta
"Matt Lightner (via RedRadiant)":http://github.com/redradiant
h2. Contributors List
"Victor Costan":http://github.com/costan
"Mark Bates":http://github.com/markbates
"Florent Guilleux":http://github.com/Florent2
"Jan De Poorter":http://github.com/DefV
"Thilo-Alexander Ginkel":http://github.com/ginkel
"Matias Käkelä":http://github.com/massive