2012-05-10 13 views
6

मैंने अपनी रेल 3.1 साइट में फेसबुक प्रमाणीकरण को एकीकृत करना शुरू कर दिया है, लेकिन जब मैं fb auth संवाद पर रद्द करें बटन पर क्लिक करता हूं तो एक समस्या में भाग गया। जब मैं रद्द करता हूं, तो मुझे अपनी साइट पर वापस/auth/facebook/callback पर रीडायरेक्ट किया जाता है और फिर/लॉगिन पेज पर रीडायरेक्ट किया जाता है (मैं डेविस का उपयोग कर रहा हूं)।Omniauth- facebook रद्द करें बटन

मैं जो करना चाहता हूं वह एक पृष्ठ पर एक रद्द ऑथ को पुनर्निर्देशित करता है जो उपयोगकर्ता को मानक तरीका (ईमेल, उपयोगकर्ता नाम, पासवर्ड इत्यादि) खाता बनाने की अनुमति देता है। मैं रीडायरेक्ट को/लॉगिन पेज पर कैसे ओवरराइड कर सकता हूं?

बीटीडब्ल्यू, मैं omniauth-facebook मणि का उपयोग कर रहा हूं।

धन्यवाद!

उत्तर

0

मैं आप डिफ़ॉल्ट अपने omniauth config में व्यवहार on_failure ओवरराइड करने के लिए, मैं का उपयोग नहीं वसीयत, लेकिन omniauth-फेसबुक मणि उपयोग कर रहा हूँ सक्षम हो सकता है लगता है और पर बदलाव के साथ सफलता मिली है:

OmniAuth.config.on_failure = Proc.new { |env| 
    OmniAuth::FailureEndpoint.new(env).redirect_to_failure 
} 

या कुछ और अधिक कस्टम की तरह:

OmniAuth.config.on_failure do |env| 
    new_path = "#{env['SCRIPT_NAME']}#{OmniAuth.config.path_prefix}/failure?message=#{error_type}" 

    [302, {'Location' => new_path, 'Content-Type'=> 'text/html'}, []] 
end 
3

अपने omniauth कॉलबैक नियंत्रक में विफलता पद्धति जोड़ें और अपने अनुकूलित व्यवहार परिभाषित करते हैं।

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 
    def facebook 
     @user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user) 

    if @user.persisted? 
     sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated 
     set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format? 
    else 
     session["devise.facebook_data"] = request.env["omniauth.auth"] 
     redirect_to new_user_registration_url 
    end 
    end 

    def failure 
    redirect_to root_path // here 
    end 

end 
+0

आपने उस कार्रवाई को "विफलता" कैसे पाया? यह मेरे लिए पूरी तरह से काम किया। लेकिन मुझे ऐसी समस्या के लिए उचित दस्तावेज़ीकरण नहीं मिला है, जो डेविस (ओमनीएथ) मणि के लिए कष्टप्रद हिस्सा है। – Jonauz

+2

मैंने रेल विकास लॉग की जांच की और मुझे पता चला कि ओथ विफल होने पर विफलता कॉल विफलता विधि। इसलिए मैंने अपना खुद का बना लिया। – synthresin

संबंधित मुद्दे