2013-03-21 8 views
9

प्रिय ललित लोग:omniauth गूगल-OAuth2 - invalid_credentials और "CSRF पता चला" अतः की

मैं ऑन रेल्स 3.2.12 एक रूबी एप्लिकेशन विकसित करने कर रहा हूँ (और मैं अभी भी यह करने के लिए नया हूँ)।

मैं डेमिस Omniauth के साथ काम करने की कोशिश कर रहा हूं ... पहली रणनीति जो मैं कोशिश कर रहा हूं वह Google_oauth2 है।

मैं उस बिंदु पर काम कर रहा हूं जहां Google ने मेरे लोकहोस्ट में वापस रीडायरेक्ट किया है: 3000 उदाहरण जो मैं Google में उपयोग करना चाहता हूं उसे चुनने के बाद।

Could not authenticate you from GoogleOauth2 because "Csrf detected".

सर्वर लॉग यह होते हैं::

वापस स्थानीय होस्ट में इस रीडायरेक्ट करने पर, मैं एक फ्लैश नोटिस देख

Started GET "https://stackoverflow.com/users/auth/google_oauth2" for 127.0.0.1 at 2013-03-21 08:57:01 -0400 
(google_oauth2) Callback phase initiated. 
(google_oauth2) Callback phase initiated. 
(google_oauth2) Authentication failure! invalid_credentials: OmniAuth::Strategie 
s::OAuth2::CallbackError, OmniAuth::Strategies::OAuth2::CallbackError 


Started GET "https://stackoverflow.com/users/auth/google_oauth2/callback?state=7849a3762d07e7f89e69b4aa46 
7efc7b7b2c21655193396b&code=4/v-dSBwAvQUUZL87iNV_yk_Z8s_x0.cnqsdbDX4gUYaDn_6y0ZQ 
NgQ9hAaewI" for 127.0.0.1 at 2013-03-21 08:57:40 -0400 
Processing by OmniauthCallbacksController#failure as HTML 
    Parameters: {"state"=>"7849a3762d07e7f89e69b4aa467efc7b7b2c21655193396b", "cod 
e"=>"4/v-dSBwAvQUUZL87iNV_yk_Z8s_x0.cnqsdbDX4gUYaDn_6y0ZQNgQ9hAaewI"} 
Redirected to http://localhost:3000/users/sign_in 
Completed 302 Found in 0ms (ActiveRecord: 0.0ms) 

मैंने देखा है कि मैं वास्तव में एक ही परिणाम है कि अगर मैं मिल बस कॉलबैक यूआरएल सीधे ब्राउज़र में डालें, बिना किसी पैरामीटर के।

http://localhost:3000/users/auth/google_oauth2/callback 

मैं क्या कोशिश कर सकता हूं? मैं और क्या जानकारी प्रदान कर सकता हूं?

+0

गिटलैब में एक ही त्रुटि के लिए कोई समाधान? http://stackoverflow.com/questions/42290769/gitlab-could-not-authenticate-you-from-googleoauth2-because-csrf-detected-erro –

उत्तर

11

मेरी अपनी पोस्ट का जवाब .... मैं इसे पिछले कर रहा हूं। मुझे पूरा यकीन नहीं है कि क्यों, लेकिन मेरे पास कुछ सुराग हैं जो गुजरने के लायक हो सकते हैं।

omniauth-facebook रणनीति से संबंधित अन्य समान मुद्दों का एक समूह है। वे Google पर लागू नहीं लग रहे थे, इसलिए मैंने बहुत गहराई से नहीं देखा। फिर मैंने एफबी रणनीति को कॉन्फ़िगर करने की कोशिश की, और एक ही समस्या आई। एफबी समाधान omniauth-facebook मणि को वापस 1.4.0 पर वापस करना था।

gem 'omniauth-facebook', '1.4.0' 

यह भी अपने आप omniauth-OAuth2 मणि ​​को वापस लाया गया (मैं मणि बात चारों ओर मेरे सिर अभी तक लिपटे नहीं है)। जब मैंने फिर से Google लिंक की कोशिश की, तो उसने उसी सीएसआरएफ का पता लगाया संदेश नहीं फेंक दिया ... हमम ... एफबी मणि को वापस लेना Google ---- यहां एक अस्वीकरण की आवश्यकता है, अन्य चीजें यहां समस्या हो सकती हैं, लेकिन मैं मुझे लगता है कि यह सही है।

उल्लेख करने की एक और समस्या है। ऊपर दिए गए लॉग में 2 बार दोबारा लॉग संदेश दिखाए गए हैं ....

(google_oauth2) Callback phase initiated. 
(google_oauth2) Callback phase initiated. 

यह एक और (शायद संबंधित) समस्या का खुलासा करता है। इसका मतलब है कि कॉलबैक दो बार निष्पादित किया गया था। एक बार जब मैं सीएसआरएफ मुद्दे को पार कर गया, तो मैंने अमान्य_credentials समस्या को अपने आप ही प्राप्त करना शुरू कर दिया। त्रुटि का कारण डुप्लिकेट कॉलबैक कॉल है। जाहिर है, ओथ 2 केवल प्रमाण पत्र के एक ही उपयोग की अनुमति देता है। दूसरा उपयोग अमान्य है।

मैं अपने गाइड के रूप में railscast # 235 का प्रयोग किया: http://railscasts.com/episodes/235-devise-and-omniauth-revised?autoplay=true

यह मुझे जोड़ने के लिए किया था "प्रदाता" omniauth.rb प्रारंभकर्ता में कहता है। और config.omniauth devise.rb प्रारंभकर्ता में कॉल करता है। मुझे लगता है कि किसी भी तरह से डुप्लिकेट कॉलबैक में परिणाम?!?!

omniauth.rb से प्रविष्टि को हटाने से मुझे वह अतीत मिला।

तो आपके पास यह है। मेरा दूसरा एसओ सवाल, और मेरा दूसरा सवाल है जहां मैं एकमात्र उत्तरदायी हूं। यकीन नहीं है कि अगर यह गूंगा या कठिन था ... मैं आशा करता हूं कि उत्तरार्द्ध।

+0

ठीक है, मेरे दोस्त आप शांति से अधिक हो सकते हैं, किसी ने उत्तर नहीं दिया है क्योंकि यह मुद्दा वास्तव में कठिन है! मुझे अब भी वही समस्याएं हैं, Google, Linkedin और ट्विटर के साथ :(तो, आप कहते हैं कि मुझे omniauth.rb से एक लाइन निकालना है, है ना? मैं बहुत खराब हूं, मैं नहीं क्या वह फ़ाइल है, तो क्या? – jlstr

+0

मेरी omniauth.rb फ़ाइल एक अस्पष्ट जगह में है ... config/startizers/omniauth.rb। यदि आपके पास यह नहीं है, तो मैं बस अन्य संभावित डुप्लिकेट के लिए चारों ओर देखता हूं? – Doug

+3

हटा रहा है omniauth.rb काम करता है। मुझे रेलस्कास्ट के बाद भी यही समस्या थी। लेकिन जब [डेविस विकी पर गाइड] का पालन करते हैं (https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview), तो आप केवल OmniAuth को कॉन्फ़िगर करते हैं config.omniauth के साथ कॉन्फ़िगर/प्रारंभकर्ता/devise.rb में: फेसबुक, "APP_ID", "APP_SECRET",: strategy_class => OmniAuth :: रणनीतियां :: फेसबुक' –

4

बस इस मुद्दे पर ठोकर खाई, लेकिन आपका फिक्स मेरे लिए काम नहीं करता था। मैं निम्नलिखित मणि संस्करणों का उपयोग कर रहा हूँ;

oauth2 (0.8.1) 
omniauth (1.1.4) 
omniauth-oauth2 (1.1.1) 
omniauth-facebook (1.4.1) 
omniauth-google-oauth2 (0.2.1) 

क्या मेरी समस्या निम्नलिखित करने के लिए अपने omniauth.rb initialiser का समायोजन किया गया था ठीक किया;

OmniAuth.config.full_host = "http://localhost:3000" 

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, KEY, SECRET, 
    provider :google_oauth2, KEY, SECRET, :scope => "userinfo.email,userinfo.profile" 
end 

मुख्य भाग google_oauth2 के लिए 'स्कोप' पैरामीटर जोड़ना था, जिसके बिना मुझे लेख विफलताएं मिल रही थीं। http://sreeharikmarar.blogspot.com.au/2013/01/omniauth-devise-authentication-using.html

एक संबंधित पोस्ट:

मैं अपने इस ब्लॉग के स्थापित आधारित OmniAuth using google oauth 2 strategy scope failure

4

मैं एक ही समस्या थी। मेरे मामले में मैंने devise.rb दोनों में google-oauth प्रमाण-पत्र प्रारंभ किए हैं और omniauth.rb में भी; इस वजह से कॉलबैक दो बार हो रहा था। Devise.rb से google-oauth प्रमाण-पत्रों को हटाने के बाद, यह सीएसआरएफ टोकन समस्या हल हो गई।

+0

काम किया मेरे लिए भी। devise.rb में प्रविष्टि को हटा दिया –

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