2014-09-17 16 views
15

tôi đã thực hiện các chiến lược khác nhau được tìm thấy trong Stackoverflow, nhưng cho đến nay, không ai dường như ảnh hưởng đến lỗi bị ném:OAuth :: trái phép 401 Authorization Required sử dụng OmniAuth-Twitter trong Rails 3.2

OAuth::Unauthorized 401 Authorization Required

tôi sau Ryan Bates' RC#241 và nhận được đến điểm mà tôi nhấp vào "Đăng nhập với Twitter" và tôi nhận được lỗi. Tôi đã đi trước và bổ sung các tuyến đường đối phó với các tập tin routes.rb như được liệt kê ở đây:

routes.rb:

match 'auth/twitter/callback', to: 'user#update' 

nghĩ rằng lỗi có thể được gây ra từ hàm callback. Lỗi tương tự. Một cái nhìn tại số dev.log của tôi cho thấy điều này:

Started GET "/auth/twitter" for 127.0.0.1 at 2014-09-16 18:52:08 -0600 
(twitter) Request phase initiated. 

OAuth::Unauthorized (401 Authorization Required): 
oauth (0.4.7) lib/oauth/consumer.rb:216:in `token_request' 
oauth (0.4.7) lib/oauth/consumer.rb:136:in `get_request_token' 
omniauth-oauth (1.0.1) lib/omniauth/strategies/oauth.rb:29:in `request_phase' 
omniauth-twitter (1.0.1) lib/omniauth/strategies/twitter.rb:60:in `request_phase' 
omniauth (1.2.2) lib/omniauth/strategy.rb:215:in `request_call' 
omniauth (1.2.2) lib/omniauth/strategy.rb:183:in `call!' 
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call' 
omniauth (1.2.2) lib/omniauth/builder.rb:59:in `call' 
... 
script/rails:6:in `require' 
script/rails:6:in `<top (required)>' 
-e:1:in `load' 
-e:1:in `<main>' 

Vì vậy, tôi biết vấn đề là do xác thực với Twitter sẽ biến mất. Phải là KEY và SECRET, phải không?

Bây giờ, tôi đã đặt các biến KEY và SECRET dưới dạng ENV [], dưới dạng chuỗi trực tiếp vào tệp environment/development.rb, đưa ra các biến "ENV []", v.v.

KEY và SECRET của tôi bây giờ nằm ​​trong một cấu hình tùy chỉnh như đã thảo luận here...

config/initializers/social_media.rb:

TWITTER_CONFIG = YAML.load_file("#{::Rails.root}/config/twitter.yml")[::Rails.env] 

Các config/initializers/omniauth.rb file:

OmniAuth.config.logger = Rails.logger 

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :twitter, TWITTER_CONFIG['app_id'], TWITTER_CONFIG['secret'] 
end 

Bất kỳ ý tưởng về các ActionController: Exception caught OAuth::Unauthorized - 401 Authorization Required? Đây có thể là lỗi Noob, nhưng Google-Fu của tôi chỉ là Google-F'ed ngay bây giờ ...

Trả lời

53

Sau một đêm rách tóc, tôi nhìn vào URL gọi lại Twitter developer console.

Lưu bản thân một số rắc rối và đừng quên để thiết lập này. Nó không được đề cập trực tiếp trong RailsCast, mặc dù Ryan đã nhanh chóng vượt qua nó.

Khi bạn thiết lập URL gọi lại, không chỉ cần đặt //localhost:3000 nó sẽ không hoạt động. Thay vì sử dụng:

http://127.0.0.1:3000/ 
+0

Hoặc bạn có thể sử dụng 'lvh.me: 3000' mà giải quyết để 127.0.0.1 – aridlehoover

+0

Nếu bạn đang sử dụng 'phù thủy' đá quý thay vào đó, có một lỗi - xem giải pháp này: https://github.com/NoamB/sorcery/issues/540#issuecomment-65752910 –

+0

đây là một phao cứu sinh. Tôi đang sử dụng các hướng dẫn RailsApp, và nó không phải là rất rõ ràng về phần này. –

Các vấn đề liên quan