2011-11-25 14 views
8

मैंने omniauth 1.0 स्थापित किया है। इसके अलावा मेरे पास oauth-0.4.5, oauth2-0.5.1, omniauth-facebook-1.0.0, omniauth-twitter-0.0.6 है।omniauth OAuthException & OAuth :: अनधिकृत

omniauth.rb 
Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :developer unless Rails.env.production? 
    provider :facebook, ENV['167257285348131'],  ENV['c8c722f697scb2afcf1600286c6212a9'],  :scope => 'email,offline_access,read_stream', :display => 'popup' 
    provider :twitter, ENV['fma2L22ObJCW52QrL7uew'], ENV['4aZfhCAOdiS7ap8pHJ7I1OZslFwVWWLiAMVpYUI'] 

end 

session_controller.rb 
class SessionsController < ApplicationController 
require 'omniauth-facebook' 
require 'omniauth-twitter' 
require 'omniauth' 

def create 
    @user = User.find_or_create_from_auth_hash(auth_hash) 
    self.current_user = @user 
    redirect_to '/' 
end 



def auth_hash 
request.env['omniauth.auth'] 
end 

end 

इसके अलावा, मैं

gemfile को 'omniauth-फेसबुक' 'omniauth-चहचहाना' जवाहरात 'omniauth' जोड़ने वहाँ दो समस्याएं हैं:

  1. मैं जाकर जब http://localhost:3000/auth/facebook मैं { "त्रुटि": { "संदेश": "क्लाइंट_आईडी पैरामीटर गुम है।", "टाइप": "ओएथएक्सप्शन" } }

और लिंक graph.facebook.com/oauth/authorize?response_type=code & client_id = & redirect_uri = http% 3A% 2F% 2Flocalhost% 3A3000% 2Fauth% 2Ffacebook% 2Fcallback & पार्स = क्वेरी & स्कोप = ईमेल% 2Coffline_access% 2Cread_stream & प्रदर्शन = पॉपअप और कोई क्लाइंट_आईडी नहीं है !!!

  1. जब मैं http://localhost:3000/auth/twitter करने के लिए जाना मैं OAuth :: अनधिकृत

401 अनधिकृत

कोई भी विचार है?

+0

का उपयोग आप फेसबुक त्रुटि समाधान कर लिया है अपने config

provider :facebook, ENV['AUTH_FB_KEY'], ENV['AUTH_FB_SECRET'] 

अद्यतन? यदि यह है, तो क्या मैं काम कर सकता हूं? मुझे एक ही त्रुटि संदेश मिलता है। यदि मैंने स्ट्रिंग पैरामीटर – Vina

+1

@Vina ENV [] को क्वेरी करने के लिए मैन्युअल रूप से क्लाइंट_आईडी जोड़ा है तो इसे हल किया जा सकता है। केवल "" प्रयोग करने का प्रयास करें। पूर्व के लिए: प्रदाता: फेसबुक, '167257285348131', 'c8c722f697scb2afcf1600286c6212a9' –

+1

धन्यवाद, यह काम करता है! ऐसा लगता है कि मुझे भीड़ को पुनरारंभ करने की आवश्यकता है। : डी – Vina

उत्तर

15

एलेक्स डी कि में सही है एनएनवी [] इसे तोड़ता है। omniauth.rb बनाने के लिए इतना है कि यह अलग वातावरण में विभिन्न चाबियों का उपयोग करता है बस डाल:

provider :twitter, TWITTER_KEY, TWITTER_SECRET 

omniauth.rb

में और फिर अपने पर्यावरण config फ़ाइलें (config/वातावरण/development.rb, आदि में) उस कुंजी को डालें जिसे आप उस पर्यावरण के लिए उपयोग करना चाहते हैं।

config/वातावरण/development.rb:

TWITTER_KEY = 'aaaaaaa' 
TWITTER_SECRET = 'aaaabbbbbb' 

config/वातावरण/उत्पादन।rb:

TWITTER_KEY = 'ccccccc' 
TWITTER_SECRET = 'ccccdddddd' 
+0

मैं इसे लेता हूं कि आप इन फ़ाइलों को अपनी गिटिनोरोर फ़ाइल में जोड़ते हैं अन्यथा आपके रेपो में किसी के भी देखने के लिए बहुत सी कुंजी उपलब्ध हैं? – Richlewis

+0

@ जेफ स्टीइल: क्या यह कुंजी और API_SECRET या पर्यावरण चर के दृष्टिकोण को संग्रहीत करने का एक बेहतर तरीका है? मुझे पता है कि यह एक बहस योग्य विषय है, लेकिन चूंकि मैं वर्तमान में एकमात्र डेवलपर हूं, कौन सा बेहतर तरीका है? –

0

किया गया है omniauth में किए गए परिवर्तनों को तोड़ने 1.0 - https://github.com/intridea/omniauth

OmniAuth 1.0 संस्करण 0.x. से कई को तोड़ने परिवर्तन आप निर्भरता सेट कर सकते हैं ~> 0.3.2 यदि आप अधिक कठिन अपग्रेड करना नहीं चाहते हैं। अधिक जानकारी के लिए wiki देखें।

मैं 0.3.2 करने के लिए omniauth को पूर्ववत करने की कोशिश करेंगे:

gem install omniauth --version '~> 0.3.2' 

या आप बंडलर का उपयोग कर रहे हैं तो अपने Gemfile में:

gem omniauth, '~> 0.3.2' 
+0

मैं 0.3.2 पर वापस आ गया। आश्चर्य की बात है कि मुझे एक ही समस्या है। –

+0

आह यह सुनकर खेद है। मुझे थोड़ी देर पहले एक ही समस्या थी, और 0.3.2 पर वापस लौटने के लिए यह मेरे लिए हल हो गया। मैं अन्य प्रासंगिक रत्नों पर इतिहास लॉग देखता हूं, और बस सुनिश्चित करता हूं कि सबकुछ मीठा दिखता है? – gef

+3

धन्यवाद, लेकिन मुझे omniauth.rb में कारण मिला। एनएनवी के बिना [] यह काम करता है। –

2

ENV['something']

अपने वातावरण "कुछ" के लिए वार्स में लग रहा है, तो यह

something='12345'

ताकि आप इसे कि

export AUTH_FB_KEY='....' 
export AUTH_FB_SECRET='...' 
की तरह करना चाहिए उम्मीद करेंगे

के साथ जांचें
env 

और यदि आप Heroku

heroku config:add AUTH_FB_KEY='....' 
संबंधित मुद्दे