lib/google_oauth.rb
require 'net/http'
require 'google/api_client'
module GoogleOauth
def google_oauth_url
google_client.authorization.authorization_uri.to_s
end
def verify_google_oauth
client = google_client
client.authorization.code = params[:code] if params[:code]
client.authorization.fetch_access_token!
http = Net::HTTP.new 'www.googleapis.com', 443
http.use_ssl = true
response = http.get "/oauth2/v1/userinfo?access_token=#{client.authorization.access_token}"
response = JSON.parse response.body
yield response['email']
end
def google_client
Google::APIClient.new.tap do |client|
client.authorization.scope = 'https://www.googleapis.com/auth/userinfo.email'
client.authorization.client_id = ::ENV['GOOGLE_OAUTH_CLIENT_ID']
client.authorization.client_secret = ::ENV['GOOGLE_OAUTH_CLIENT_SECRET']
client.authorization.redirect_uri = ::ENV['GOOGLE_OAUTH_REDIRECT']
end
end
end