Skip to content

Instantly share code, notes, and snippets.

@j-manu
Created November 18, 2011 10:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save j-manu/1376130 to your computer and use it in GitHub Desktop.
Save j-manu/1376130 to your computer and use it in GitHub Desktop.
class SessionController < ApplicationController
skip_before_filter :login_required, :only => [:new, :create]
def new
consumer = get_consumer
request_token = consumer.get_request_token( {}, {:scope => "https://www.google.com/m8/feeds/"})
session[:oauth_secret] = request_token.secret
next_url = http://localhost:3000/session/create
redirect_to request_token.authorize_url + "&oauth_callback=#{next_url}"
end
def create
request_token = OAuth::RequestToken.new(get_consumer, params[:oauth_token], session[:oauth_secret])
access_token = request_token.get_access_token
xml = XmlSimple.xml_in(access_token.get("https://www.google.com/m8/feeds/contacts/default/full/").body)
email = xml["author"].first["email"].first
user = User.find_or_create_by_email(email)
user.name = xml["author"].first["name"].first
user.oauth_token = access_token.token
user.oauth_secret = access_token.secret
user.save
session[:user_id] = user.id
redirect_to :controller => 'account'
end
def delete
reset_session
flash[:notice] = "You have been logged out"
redirect_to :action => 'new'
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment