Skip to content

Instantly share code, notes, and snippets.

@hogashi
Created September 16, 2015 15:25
Show Gist options
  • Save hogashi/d9a1a9d868cf4d63fa88 to your computer and use it in GitHub Desktop.
Save hogashi/d9a1a9d868cf4d63fa88 to your computer and use it in GitHub Desktop.
Twitter OAuth in sinatra
require 'sinatra'
require 'twitter_oauth'
enable :sessions
before do
key = '**app**consumer**key**'
secret = '**app**consumer**secret**'
@twitter = TwitterOAuth::Client.new(
:consumer_key => key,
:consumer_secret => secret,
:token => session[:access_token],
:secret => session[:secret_token])
end
def base_url
default_port = (request.scheme == "http") ? 80 : 443
port = (request.port == default_port) ? "" : ":#{request.port.to_s}"
"#{request.scheme}://#{request.host}#{port}"
end
get "/request_token/?" do
callback_url = "#{base_url}/access_token"
request_token = @twitter.request_token(:oauth_callback => callback_url)
session[:request_token] = request_token.token
session[:request_token_secret] = request_token.secret
redirect request_token.authorize_url
end
get "/access_token/?" do
begin
@access_token = @twitter.authorize(session[:request_token], session[:request_token_secret],
:oauth_verifier => params[:oauth_verifier])
rescue OAuth::Unauthorized => @exception
return erb :authorize_fail
end
session[:access_token] = @access_token.token
session[:secret_token] = @access_token.secret
session[:user_id] = @twitter.info['user_id']
session[:screen_name] = @twitter.info['screen_name']
session[:profile_image] = @twitter.info['profile_image_url_https']
redirect '/'
end
get "/?" do
@title = 'TwitterOAuth認証'
erb :index
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment