Skip to content

Instantly share code, notes, and snippets.

@lachlanhardy
Created July 9, 2009 06:09
Show Gist options
  • Select an option

  • Save lachlanhardy/143462 to your computer and use it in GitHub Desktop.

Select an option

Save lachlanhardy/143462 to your computer and use it in GitHub Desktop.
# cut out of a real app, so a bit bastardised and probably wouldn't run as it's own Sinatra app, but I think it pretty much covers the entire process of Twitter OAuth
require 'sinatra'
gem 'oauth'
require 'oauth/consumer'
module Twitter
class Application < Sinatra::Application
enable :sessions
set :site_root, '/'
def do_oauth_dance
@request_token = @consumer.get_request_token(:oauth_callback => "http://app.local/signup")
session[:request_token] = @request_token.token
session[:request_token_secret] = @request_token.secret
end
before do
@consumer = OAuth::Consumer.new "consumer-key", "consumer-secret", {:site=>"http://twitter.com"}
end
get '/' do
do_oauth_dance
haml :index
end
get '/signup' do
@access_token = OAuth::RequestToken.new(@consumer, session[:request_token], session[:request_token_secret]).get_access_token(:oauth_verifier =>params[:oauth_verifier])
session[:access_token] = @access_token
@user = User.new
haml :signup
end
post '/create' do
@user = User.new(params[:user])
@user.twitter_screen_name = session[:access_token][:screen_name]
@user.twitter_user_id = session[:access_token][:user_id]
@user.twitter_oauth_token = session[:access_token][:oauth_token]
@user.twitter_oauth_token_secret = session[:access_token][:oauth_token_secret]
if @user.valid? && @user.save!
redirect "/thank-you"
else
haml :signup
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment