अरे, शायद मैं इस पर मदद कर सकते हैं, बस नहीं बहुत समय पहले इस समस्या थी ...
फेसबुक कनेक्ट पुरानी हो चुकी है। सभी अच्छे बच्चे अब ओएथ के साथ फेसबुक ग्राफ का उपयोग कर रहे हैं। फेसबुक टीम ने फेसबुक कनेक्ट के लिए दस्तावेज भी बंद कर दिया है।
वैसे भी, जो ऑथलॉगिक फेसबुक कनेक्ट के लिए जाता है, यह अब और काम नहीं करता है।
अंत में, मैंने सामान्य लॉगिन और खाता प्रबंधन के लिए एथलॉगिक का उपयोग जारी रखा, लेकिन फेसबुक कनेक्ट के लिए मैंने अपना कोड लिखा।
संभावना है कि आपने फेसबुकर मणि का उपयोग किया हो। उस मणि को अनइंस्टॉल करें, लेकिन config/facebooker.yml फ़ाइल रखें।
इस प्रयास करें: config/initializers/load_config.rb अंदर इस कोड को जोड़कर config/facebooker.yml का उपयोग कर
रखें
config = YAML.load_file("#{Rails.root}/config/facebooker.yml") || {}
(आप इस फ़ाइल बनाने की आवश्यकता) facebook_config = config['common'] || {}
facebook_config.update(config[Rails.env] || {})
FB_CONFIG = facebook_config.symbolize_keys
अपने user_controller.rb अंदर इस कोड जोड़ें:
def facebook_oauth_callback
if not params[:code].nil?
callback = url_for(:host => APP_CONFIG[:host], :controller => 'gallery/user', :action => 'facebook_oauth_callback')
url = URI.parse("https://graph.facebook.com/oauth/access_token?client_id=#{FB_CONFIG[:application_id]}&redirect_uri=#{callback}&client_secret=#{FB_CONFIG[:secret_key]}&code=#{CGI::escape(params[:code])}")
http = Net::HTTP.new(url.host, url.port) http.use_ssl = (url.scheme == 'https') tmp_url = url.path + "?" + url.query
request = Net::HTTP::Get.new(tmp_url)
response = http.request(request)
data = response.body
access_token = data.split("=")[1]
if access_token.blank?
flash[:notice] = 'An error occurred while connecting through Facebook, please try again later.'
else
url = URI.parse("https://graph.facebook.com/me?access_token=#{CGI::escape(access_token)}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = (url.scheme == 'https')
tmp_url = url.path + "?" + url.query
request = Net::HTTP::Get.new(tmp_url)
response = http.request(request)
user_data = response.body
user_data_obj = JSON.parse(user_data)
@user = User.new_or_find_by_facebook_oauth_access_token(access_token, {:user_data => user_data_obj})
if @user.new_record?
session[:user] = @user
session[:external_app] = "Facebook"
redirect_to(:action => 'new_details')
else
user_session = UserSession.create(@user)
flash[:notice] = "Successfully logged in."
redirect_back_or_default root_url
end
end
end
end
def create_facebook
redirect_to("https://graph.facebook.com/oauth/authorize?client_id=#{FB_CONFIG[:application_id]}&redirect_uri=" +
url_for(:host => APP_CONFIG[:host], :controller => 'gallery/user', :action => 'facebook_oauth_callback') +
"&scope=email,offline_access")
end
- अपने प्रयोक्ता मॉडल (एप्लिकेशन/मॉडल/उपयोगकर्ता के अंदर खोजने विधि जोड़ें।rb):
def self.new_or_find_by_facebook_oauth_access_token(access_token, options = {})
user = User.find_by_facebook_oauth_access_token(access_token)
if user.blank?
#code to create new user here
end
user
end
तरह
<%= link_to image_tag('gallery/button-facebook.png', :title => "register with Facebook", :alt => "register with Facebook"), {:action => 'create_facebook'}, {:target => '_parent'} %>
स्पष्टीकरण कुछ ध्यान में रखते हुए कार्रवाई create_facebook के लिए लिंक जोड़ें,
- पहले चरण में आपने facebooker.yml
- से कॉन्फ़िगर डेटा प्राप्त करने के लिए एक फ़ाइल बनाई है, दूसरे चरण में, आपने मूल रूप से दो फ़ंक्शन बनाए, एक उपयोगकर्ता को फेसबुक साइट (create_facebook) और अन्य को कॉलबैक डेटा कैप्चर करने के लिए (facebook_oauth_callback) विचार इस पृष्ठ से था: http://www.wisejive.com/2010/05/facebook-oauth-on-rails.html
- तीसरे चरण में, आपने उपयोगकर्ता मॉडल के अंदर एक विधि जोड़ दी है, या नहीं मिला है, जो उपयोगकर्ता नहीं मिला है, उपयोगकर्ता द्वारा वापस दी गई जानकारी के आधार पर उपयोगकर्ता।
कोड केवल मेरे प्रोजेक्ट पर काम करता है, न केवल इसे कॉपी-पेस्ट करें बल्कि इसे लाइन-बाय-लाइन सीखें। समय के साथ मुझे एहसास हुआ कि सरल कोड का उपयोग करना बेहतर है जिसे आप समझ सकते हैं कि आप अन्य जटिल प्लगइन का उपयोग करने के बजाय समझ सकते हैं, जब आप चीजें खराब हो जाते हैं तो आप ठीक नहीं कर सकते ...
क्या आप इसके साथ कहीं भी गए? – Codebeef
नहीं, जब मैं इसे वापस प्राप्त करता हूं तो मैं http://github.com/kalasWarrior/authlogic_facebook को http://github.com/kalasjocke/authlogic_facebook_connect की बजाय कोशिश करने जा रहा हूं उम्मीद है कि लंबे समय तक बेहतर काम करेगा । – a10s