Skip to content

Instantly share code, notes, and snippets.

@seven1m
Created December 13, 2010 05:58
Show Gist options
  • Save seven1m/738705 to your computer and use it in GitHub Desktop.
Save seven1m/738705 to your computer and use it in GitHub Desktop.
require 'oauth'
require 'oauth/consumer'
require 'oauth/signature/rsa/sha1'
APP_URL = 'http://example.com'
OAUTH_KEY = 'key'
OAUTH_SECRET = 'secret'
OAUTH_APP_NAME = 'MyAppName'
get '/auth' do
consumer = get_consumer
next_url = "#{APP_URL}/auth/create"
request_token = consumer.get_request_token({:oauth_callback => next_url}, {:scope => "http://docs.google.com/feeds/ http://spreadsheets.google.com/feeds/"})
session[:oauth_secret] = request_token.secret
redirect request_token.authorize_url
end
get '/auth/create' do
request_token = OAuth::RequestToken.new(get_consumer, params[:oauth_token], session[:oauth_secret])
access_token = request_token.get_access_token(:oauth_verifier => params[:oauth_verifier])
session[:token_string] = access_token.token
session[:token_secret] = access_token.secret
redirect '/' # done with auth, now redirect somewhere in your app
end
get '/logout' do
session[:token_string] = session[:token_secret] = nil
redirect '/'
end
def get_consumer
consumer = OAuth::Consumer.new(
OAUTH_KEY, OAUTH_SECRET,
{
:site => "https://www.google.com",
:request_token_path => "/accounts/OAuthGetRequestToken",
:access_token_path => "/accounts/OAuthGetAccessToken",
:authorize_path => "/accounts/OAuthAuthorizeToken",
:signature_method => "HMAC-SHA1"
}
)
end
def get_access_token
session[:token_string] && session[:token_secret] && OAuth::AccessToken.new(get_consumer, session[:token_string], session[:token_secret])
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment