Skip to content

Commit

Permalink
Replaced the Twitter authentication by a Google (Apps) Mail authentic…
Browse files Browse the repository at this point in the history
…ation
  • Loading branch information
Nicolas Fouché committed Dec 13, 2010
1 parent 39248c3 commit 199350b
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 19 deletions.
14 changes: 14 additions & 0 deletions README
@@ -1,3 +1,17 @@
Fork notes:

I updated the "twitter-oauth-sinatra" app to make it work with Google Mail and Google Apps Mail.
As a bonus, it gets the email address of the user, as we do on http://silentale.com. Quite useful if you want to use IMAP or SMTP with these tokens :)

For your local tests, launch:

CONSUMER_KEY=mydomain.com CONSUMER_SECRET=mysecret ruby app.rb

Contact me at http://about.me/nfo


Original README:

directions using heroku for hosting: directions using heroku for hosting:


create twitter app at http://twitter.com/apps create twitter app at http://twitter.com/apps
Expand Down
33 changes: 17 additions & 16 deletions app.rb
@@ -1,19 +1,24 @@
require "rubygems" require "rubygems"
require "sinatra" require "sinatra"
require 'json'
require "oauth" require "oauth"
require "oauth/consumer" require "oauth/consumer"
require 'grackle'
require 'haml' require 'haml'


enable :sessions enable :sessions


before do before do
session[:oauth] ||= {} session[:oauth] ||= {}


consumer_key = ENV["consumer_key"] consumer_key = ENV["CONSUMER_KEY"] || ENV["consumer_key"]
consumer_secret = ENV["consumer_secret"] consumer_secret = ENV["CONSUMER_SECRET"] || ENV["consumer_secret"]


@consumer ||= OAuth::Consumer.new(consumer_key, consumer_secret, :site => "http://twitter.com") @consumer ||= OAuth::Consumer.new(consumer_key, consumer_secret,
:site => "https://www.google.com",
:request_token_path => '/accounts/OAuthGetRequestToken?scope=https://mail.google.com/%20https://www.googleapis.com/auth/userinfo%23email',
:access_token_path => '/accounts/OAuthGetAccessToken',
:authorize_path => '/accounts/OAuthAuthorizeToken'
)


if !session[:oauth][:request_token].nil? && !session[:oauth][:request_token_secret].nil? if !session[:oauth][:request_token].nil? && !session[:oauth][:request_token_secret].nil?
@request_token = OAuth::RequestToken.new(@consumer, session[:oauth][:request_token], session[:oauth][:request_token_secret]) @request_token = OAuth::RequestToken.new(@consumer, session[:oauth][:request_token], session[:oauth][:request_token_secret])
Expand All @@ -23,28 +28,24 @@
@access_token = OAuth::AccessToken.new(@consumer, session[:oauth][:access_token], session[:oauth][:access_token_secret]) @access_token = OAuth::AccessToken.new(@consumer, session[:oauth][:access_token], session[:oauth][:access_token_secret])
end end


if @access_token
@client = Grackle::Client.new(:auth => {
:type => :oauth,
:consumer_key => consumer_key,
:consumer_secret => consumer_secret,
:token => @access_token.token,
:token_secret => @access_token.secret
})
end
end end


get "/" do get "/" do
if @access_token if @access_token
@statuses = @client.statuses.friends_timeline? :count => 100 response = @access_token.get('https://www.googleapis.com/userinfo/email?alt=json')
if response.is_a?(Net::HTTPSuccess)
@email = JSON.parse(response.body)['data']['email']
else
STDERR.puts "could not get email: #{response.inspect}"
end
haml :index haml :index
else else
'<a href="/request">Sign On</a>' '<a href="/request">Sign On</a>'
end end
end end


get "/request" do get "/request" do
@request_token = @consumer.get_request_token(:oauth_callback => "http://#{request.host}/auth") @request_token = @consumer.get_request_token(:oauth_callback => "#{request.scheme}://#{request.host}:#{request.port}/auth")
session[:oauth][:request_token] = @request_token.token session[:oauth][:request_token] = @request_token.token
session[:oauth][:request_token_secret] = @request_token.secret session[:oauth][:request_token_secret] = @request_token.secret
redirect @request_token.authorize_url redirect @request_token.authorize_url
Expand Down
9 changes: 6 additions & 3 deletions views/index.haml
@@ -1,5 +1,8 @@
%html %html
%body %body
%ul %h3 Authorized email address
- @statuses.each do |status| %p= @email || ":("
%li= status.text %h3 Token
%p= @access_token.token
%h3 Secret
%p= @access_token.secret

0 comments on commit 199350b

Please sign in to comment.