Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Allow the metal piece to run in isolation
- require(File.dirname(__FILE__) + "/../../config/environment") unless defined?(Rails)
- require 'sinatra'
- class Auth < Sinatra::Application
- #enable :sessions
- configure do
- FB = YAML.load_file(File.dirname(__FILE__) + "/../../config/facebooker.yml")
- end
- helpers do
- # Load portal and setup facebook oauth
- def facebook_client
- portal = Portal.find(params[:portal_id])
- if RAILS_ENV == "production" && @portal.facebook_api_key
- facebook_connect = FB["production"]["alternative_keys"][portal.facebook_api_key]
- elsif request.host == '127.0.0.1' #debugging keys with callback domain 127.0.0.1
- facebook_connect = {"secret_key" => 'XXXXXXXX', "application_id" => 'XXXX' }
- portal = Portal.find_by_default_start_portal(true)
- else
- facebook_connect = FB[RAILS_ENV]
- end
- facebook_connect["application_id"] = portal.facebook_api_key unless facebook_connect["application_id"]
- callback_url = "#{request.scheme}://#{request.host}:#{request.port}/auth/facebook/callback?portal_id=#{portal.id}"
- return FacebookOAuth::Client.new(
- :application_id => facebook_connect["application_id"],
- :application_secret => facebook_connect["secret_key"],
- :callback => callback_url)
- end
- end
- get '/auth/facebook' do
- client = facebook_client
- if params[:format] == "mobile"
- redirect "#{client.authorize_url}&display=touch"
- else
- redirect client.authorize_url
- end
- end
- get '/auth/facebook/callback' do
- client = facebook_client
- access_token = client.authorize(:code => params[:code]) # it's possible to load data from facebook by this access_token.token
- info = client.me.info
- current_user = User.find_by_fb_user_id(info["id"])
- if current_user
- session[:user_id] = current_user.id
- else
- current_user = User.new(
- :name => info["name"],
- :login => info["name"].downcase.gsub(" ","_"),
- :password => "", :email => "",
- :fb_user_id => info["id"],
- :portal_id => @portal.id,
- :original_potal_id => @portal.id)
- if current_user.save
- session[:user_id] = current_user.id
- end
- end
- redirect "/home"
- end
Add Comment
Please, Sign In to add comment