wynst / sinbook Goto Github PK
View Code? Open in Web Editor NEWThis project forked from tmm1/sinbook
simple sinatra facebook extension in 300 lines of ruby
This project forked from tmm1/sinbook
simple sinatra facebook extension in 300 lines of ruby
sinbook: simple sinatra facebook extension in 300 lines of ruby (c) 2009 Aman Gupta (tmm1) === Usage require 'sinbook' require 'sinatra' facebook do api_key '4579...cbb0' secret '5106...2342' app_id 81747826609 url 'http://apps.facebook.com/myappname' callback 'http://myappserver.com' end get '/' do fb.require_login! "Hi <fb:name uid=#{fb[:user]} useyou=false />!" end === Features sinbook provides a simple `facebook` helper (also aliased to `fb`). >> fb.valid? => true # valid (authenticated) request from facebook's servers >> pp fb.params { :logged_out_facebook => false, # request came from a user logged into facebook :added => true, # user is logged into our app :user => 1234, # user's facebook uid :friends => [1,2,3], # list of user's friends ... } >> fb[:user] # [] is aliased to params[] => 1234 >> fb.callback => 'http://apps.facebook.com/myappname' >> fb.callback('/homepage') => 'http://apps.facebook.com/myappname/homepage' >> fb.url('/images/static.gif') => 'http://myappserver.com/images/static.gif' >> fb.appurl => 'http://apps.facebook.com/add.php?api_key=4579...cbb0' >> fb.addurl => 'http://www.facebook.com/apps/application.php?id=81747826609' >> fb.redirect('/welcome') # redirect using an fb:redirect tag >> fb.require_login! # redirect to addurl page unless logged in The helper can also be used to make API calls >> fb.users.getInfo :uid => 1234, :fields => [:name] => [{'uid' => 1234, 'name' => 'Frank Sinatra'}] >> fb.groups.get :uid => 1234 => [{'name' => 'Sinatra Users'}] >> fb.profile.setFBML :profile => 'hello world' => true >> fb.profile.getFBML => 'hello world' === Other Options facebook do symbolize_keys true end >> fb.groups.get :uid => 1234 => [{:name => 'Sinatra Users'}] === Standalone Usage require 'sinbook' fb = Sinbook.new( :api_key => '4579...cbb0', :secret => '5106...2342', :app_id => 81747826609 ) >> fb.friends.get :uid => 1234, :session_key => 'user-session-key' => [4321,4567,9876] === Local Development To develop locally, use ssh to setup a reverse tunnel to your external server. For example, set your callback url to http://myserver.com:4567/, and run: ssh -gNR 4567:localhost:4567 [email protected] Then, simply launch sinatra on your local machine. Facebook will make requests to http://myserver.com:4567/ which will be forwarded to port 4567 on your local machine. For facebook connect, I generally add a CNAME on my domain for fb.myserver.com, and setup nginx on my server with the following: server { server_name fb.myserver.com; location / { proxy_pass http://localhost:4567; } } Make sure your connect url is set to 'http://myserver.com' and the base domain is set to 'myserver.com', so that the fb.myserver.com subdomain works. === TODO * Add a batch mode for api calls: groups, pics = fb.batch do |b| b.groups.get :uid => 123 b.users.getInfo :uids => 123, :fields => [:pic_square] end
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.