महीने पहले मैंने एक रेल ऐप बनाया जो ओएथ 2 का उपयोग करके Google के साथ प्रमाणीकृत - विशेष रूप से, omniauth-google-oauth2 मणि। मेरे पास प्रमाणीकरण बनाने और रीफ्रेश टोकन स्टोर करने के लिए काम करने वाले सभी कदम थे, लेकिन हाल ही में oauth2 ने प्रतिक्रिया के हिस्से के रूप में 'refresh_token' वापस भेजना बंद कर दिया था। मूल रूप से मैं एक प्रतिक्रिया है कि निहित प्राप्त था:मैं omniauth google oauth2 के साथ रेल ऐप के लिए 'refresh_token' कैसे वापस प्राप्त करूं?
credentials: {
refresh_token: XXX,
token: YYY,
expires_at: 1374840767,
expires: true
},
अब मैं केवल टोकन कि एक घंटे के भीतर समाप्त हो रहा है वापस पाने:
credentials: {
token: YYY,
expires_at: 1374840767,
expires: true
},
मैं वास्तव में मैं क्या करने के लिए आवेदन की ओर से किया था पता नहीं है इसे बदलें, इसलिए मुझे यकीन नहीं है कि Google के साथ कुछ बदल गया है, या अगर ऐसा कुछ था जो मैंने किया था। संदर्भ के लिए, मेरे कोड लगता है:
initializers/omniauth.rb:
def create
auth = request.env["omniauth.auth"]
params = request.env["omniauth.params"]
project = Project.find(params['project_id'])
Authentication.create(:project_id => project.id, :provider => auth['provider'], :uid => auth['uid'], :access_token => auth['credentials']['refresh_token'])
flash[:notice] = "Authentication successful."
redirect_to owner_view_project_path(project)
end
यह संभव कुछ में याद आ रही है है:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, 'KEY', 'SECRET', {:scope => "userinfo.email,userinfo.profile,analytics.readonly,adsense.readonly"}
end
authentications_controller.rb जहाँ मैं प्रतिक्रिया प्राप्त है मेरे शुरुआती/omniauth.rb फ़ाइल? मैं विकल्पों हैश में निम्नलिखित को जोड़ की कोशिश की है, लेकिन यह ताज़ा टोकन वापस लाने के लिए नहीं मालूम था:
:approval_prompt => "force", :access_type => "offline"
किसी भी मदद की बहुत सराहना की जाएगी! अग्रिम में धन्यवाद!
क्या आपने इस समस्या को हल किया है? मैं अब एक ही समस्या का सामना कर रहा हूं और मुझे आपको समाधान देखना अच्छा लगेगा। धन्यवाद! –