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ờ ...
Hoặc bạn có thể sử dụng 'lvh.me: 3000' mà giải quyết để 127.0.0.1 – aridlehoover
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 –
đâ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. –