मैं कोमा को Omniauth के साथ काम करने की कोशिश कर रहा हूं। उपयोगकर्ता नाम Omniauth का उपयोग करके फेसबुक के साथ लॉग इन करता है और मैं ऐप का उपयोग कर रहे उपयोगकर्ता के दोस्तों की सूची खींचने के लिए कोआला को क्लाइंट के रूप में उपयोग करना चाहता हूं।कोमाला को Omniauth के साथ अच्छी तरह से खेलने के लिए कैसे प्राप्त करें?
@friends = Array.new
if current_user.token
graph = Koala::Facebook::GraphAPI.new(current_user.token)
@profile_image = graph.get_picture("me")
@fbprofile = graph.get_object("me")
@friends = graph.get_connections("me", "friends")
end
डीबी स्कीमा
create_table "users", :force => true do |t|
t.string "provider"
t.string "uid"
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
t.string "token"
end
उपयोगकर्ता मॉडल है
def self.create_with_omniauth(auth)
create! do |user|
user.provider = auth["provider"]
user.uid = auth["uid"]
user.name = auth["user_info"]["name"]
end
end
Koala.rb प्रारंभकर्ता है
नियंत्रक::
मैं टोकन ठीक से बचत हो रहे हैं नहीं हैmodule Facebook
CONFIG = YAML.load_file(Rails.root.join("config/facebook.yml"))[Rails.env]
APP_ID = CONFIG['app_id']
SECRET = CONFIG['secret_key']
end
Koala::Facebook::OAuth.class_eval do
def initialize_with_default_settings(*args)
case args.size
when 0, 1
raise "application id and/or secret are not specified in the config" unless Facebook::APP_ID && Facebook::SECRET
initialize_without_default_settings(Facebook::APP_ID.to_s, Facebook::SECRET.to_s, args.first)
when 2, 3
initialize_without_default_settings(*args)
end
end
alias_method_chain :initialize, :default_settings
end
सत्र नियंत्रक है:
def create
auth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.create_with_omniauth(auth)
session[:user_id] = user.id
session['fb_auth'] = request.env['omniauth.auth']
session['fb_access_token'] = omniauth['credentials']['token']
session['fb_error'] = nil
redirect_to root_url
end
क्योंकि आप create_with_omniauth विधि में टोकन भंडारण नहीं कर रहे हैं यह है। – Tom