Skip to content

Instantly share code, notes, and snippets.

@kkosuge
Created September 8, 2011 03:48
Show Gist options
  • Save kkosuge/1202562 to your computer and use it in GitHub Desktop.
Save kkosuge/1202562 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'sinatra'
require 'twitter_oauth'
configure do
set :sessions, true
end
before do
next if request.path_info =~ /ping$/
@user = session[:user]
@client = TwitterOAuth::Client.new(
:consumer_key => "",
:consumer_secret => "",
:token => session[:access_token],
:secret => session[:secret_token]
)
end
get '/' do
erb :index
end
post '/' do
@client.update(params[:create]) if params[:create]
erb :index
end
get '/login' do
request_token = @client.request_token(
:oauth_callback => ""
)
session[:request_token] = request_token.token
session[:request_token_secret] = request_token.secret
redirect request_token.authorize_url.gsub('authorize', 'authenticate')
end
get '/auth' do
begin
@access_token = @client.authorize(
session[:request_token],
session[:request_token_secret],
:oauth_verifier => params[:oauth_verifier]
)
rescue OAuth::Unauthorized
end
if @client.authorized?
session[:access_token] = @access_token.token
session[:secret_token] = @access_token.secret
session[:user] = @client.info
end
redirect '/'
end
get '/logout' do
session[:user] = nil
session[:request_token] = nil
session[:request_token_secret] = nil
session[:access_token] = nil
session[:secret_token] = nil
redirect '/'
end
__END__
#
# layout.erb
#
<html>
<head>
<title>Twitter OAuth Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<h2>Twitter OAuth Test</h2>
<%= yield %>
<script src="https://gist.github.com/1202562.js?file=twitter.oauth.kksg.net.rb"></script>
</body>
</html>
#
# index.erb
#
<% if @user %>
<style type="text/css">
#me li{display: inline;}
</style>
<ul id="me">
<li><img src="<%=@user['profile_image_url']%>"%></li>
<li>@<%= @user['screen_name'] %> <a href="/logout">logout</a></li>
</ul>
<form method="post" action="/">
<textarea name="create" rows="4" cols="50"> Post to your timeline </textarea>
<input type="submit" value="post" />
</form>
<p>access_token: <%= session[:access_token] %></p>
<p>secret_token: <%= session[:secret_token] %></p>
<% else %>
<div style="margin:20px;"><a href="/login"><img src="sign-in-with-twitter-d.png" /></a></div>
<% end %>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment