The first version of a Facebook Open Graph Library for Ruby. Require HTTParty to function. For documentation on the Open Graph Library, see: http://developers.facebook.com/docs/api ====================================== Quick Start: ====================================== Add config.gem "mogli" to environment.rb For Rails: create a controller like the following: class OauthController < ApplicationController def new session[:at]=nil redirect_to authenticator.authorize_url(:scope => 'publish_stream', :display => 'page') end def create mogli_client = Mogli::Client.create_from_code_and_authenticator(params[:code],authenticator) session[:at]=mogli_client.access_token redirect_to "/" end def index redirect_to new_oauth_path and return unless session[:at] user = Mogli::User.find("me",Mogli::Client.new(session[:at])) @user = user @posts = user.posts end def authenticator @authenticator ||= Mogli::Authenticator.new('client_id', 'secret', oauth_callback_url) end end with routes: map.resource :oauth, :controller=>"oauth" map.root :controller=>"oauth" map.oauth_callback "/oauth/create", :controller=>"oauth", :action=>"create" Viewing / should redirect you to the login page, and then redirect back to your app to show your recent posts From the console, you can create a client with the stored access token: require "rubygems" require "mogli" client = Mogli::Client.new("your_access_token") You can now fetch users with the client, for example: myself = Mogli::User.find("me",client) or mikemangino = Mogli::User.find(12451752,client) When you fetch yourself, you can look at your posts and other information: myself.posts You can also fetch other objects by ID, for example: album = Mogli::Album.find(99394368305) album.photos If the object requires a client, just pass one in: album = Mogli::Album.find(99394368305,client) album.photos You can also upload photos using httmultiparty: facebook_access_token = "..." client = Mogli::Client.new(facebook_access_token) client.post("me/photos", nil, {:source => File.open("myphoto.jpg")}) ======================================== Contributing ======================================== 1) fork the repo 2) Add tests for a missing method, such as client.post(post_id) 3) implement missing method 4) send me a pull request. Feel free to add missing associations if you see them as well. My goal is to get a readonly API in place first, and then move on to the read/write API Mike