OAuth:: Несанкционированная авторизация 401 с использованием OmniAuth-Twitter в Rails 3.2
Я реализовал несколько разных стратегий, найденных в StackOverFlow, но пока что ни один из них не влияет на возникающую ошибку:
OAuth::Unauthorized
401 Authorization Required
Я следую Ryan Bates 'RС# 241 и добираюсь до точки, где я нажимаю "Войти с Twitter", и я получаю Ошибка. Я пошел дальше и добавил маршрут ответа в файл routes.rb
, как указано здесь:
routes.rb
:
match 'auth/twitter/callback', to: 'user#update'
полагая, что ошибка может быть вызвана функцией обратного вызова. Такая же ошибка. Взгляд на мой dev.log
показывает это:
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>'
Итак, я знаю, что проблема связана с аутентификацией с выходом Twitter. Должен быть КЛЮЧ и СЕКРЕТ, верно?
Теперь я поместил KEY и SECRET в переменные ENV [], как прямые строки в файл environment/development.rb
, вынул переменные "ENV []" и т.д. в соответствии с предложениями, найденными по всему стеку.
My KEY и SECRET теперь находятся в пользовательской конфигурации, как обсуждалось здесь...
config/initializers/social_media.rb:
TWITTER_CONFIG = YAML.load_file("#{::Rails.root}/config/twitter.yml")[::Rails.env]
Файл config/initializers/omniauth.rb
:
OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, TWITTER_CONFIG['app_id'], TWITTER_CONFIG['secret']
end
Любые идеи на ActionController: Exception caught OAuth::Unauthorized - 401 Authorization Required
? Вероятно, это ошибка Noob, но мой Google-Fu сейчас просто Google-F'ed...
Ответы
Ответ 1
После того, как я потерял волосы, я посмотрел URL-адрес обратного вызова на панель разработчиков Twitter.
Сохраните некоторые проблемы и не забудьте установить это. Он не упоминается непосредственно в RailsCast, хотя Райан ненадолго передает его.
Когда вы устанавливаете URL-адрес обратного вызова, не просто ставьте //localhost:3000
, он не будет работать. Вместо этого используйте:
http://127.0.0.1:3000/