Skip to content

Instantly share code, notes, and snippets.

@mallipeddi
Created September 14, 2010 08:59
Show Gist options
  • Select an option

  • Save mallipeddi/578764 to your computer and use it in GitHub Desktop.

Select an option

Save mallipeddi/578764 to your computer and use it in GitHub Desktop.
get '/auth/twitter' do
oauth = OAuth::Consumer.new(Settings::TWITTER_OAUTH_CONSUMER_KEY,
Settings::TWITTER_OAUTH_CONSUMER_SECRET,
{ :site => "http://twitter.com" })
request_token = oauth.get_request_token(:oauth_callback => full_uri('/auth/twitter/callback'))
session[:oauth_twitter_reqtoken] = request_token.token
session[:oauth_twitter_reqtoken_secret] = request_token.secret
redirect request_token.authorize_url
end
get '/auth/twitter/callback' do
oauth = OAuth::Consumer.new(Settings::TWITTER_OAUTH_CONSUMER_KEY,
Settings::TWITTER_OAUTH_CONSUMER_SECRET,
{ :site => "http://twitter.com" })
request_token = OAuth::RequestToken.new(oauth, session[:oauth_twitter_reqtoken],
session[:oauth_twitter_reqtoken_secret])
access_token = request_token.get_access_token(
:oauth_verifier => params[:oauth_verifier])
session.delete :oauth_twitter_reqtoken
session.delete :oauth_twitter_reqtoken_secret
# Get account details from Twitter
response = oauth.request(:get, '/account/verify_credentials.json',
access_token, { :scheme => :query_string })
# Then do stuff with the details
twitter_info = JSON.parse(response.body)
# twitter_info.inspect
u = User.where("twitterinfo.user_id" => twitter_info["id"]).one
u = User.create_from_twitter(twitter_info, access_token) if u.nil?
login u.id
redirect '/'
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment