ruby-on-rails-3 twitter omniauth

ruby on rails 3 - OAuth:: Autorización 401 no autorizada requerida para utilizar OmniAuth-Twitter en Rails 3.2



ruby-on-rails-3 (1)

He implementado varias estrategias diferentes que se encuentran en StackOverFlow, pero hasta ahora, ninguna parece afectar el error que se produce:

OAuth::Unauthorized 401 Authorization Required OAuth::Unauthorized 401 Authorization Required

Estoy siguiendo el RC # 241 de Ryan Bates y llego al punto en que hago clic en "Iniciar sesión con Twitter" y aparece el error. Seguí adelante y agregué la ruta de respuesta al archivo routes.rb como se indica aquí:

routes.rb :

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

pensando que el error podría ser causado por la función de devolución de llamada. Mismo error. Un vistazo a mi dev.log muestra esto:

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>''

Así que sé que el problema es con la autenticación con Twitter saliendo. Debe ser la clave y el secreto, ¿verdad?

Ahora, puse KEY y SECRET como variables ENV [], como cadenas directas al archivo environment/development.rb , eliminé las variables "ENV []", etc., según las sugerencias que se encuentran en la pila.

Mi KEY y SECRET ahora residen en una configuración personalizada como se explica here...

config/initializers/social_media.rb:

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

El archivo 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

¿Alguna idea sobre ActionController: Exception caught OAuth::Unauthorized - 401 Authorization Required ? Probablemente este sea un error de Noob, pero mi Google-Fu es solo Google-F''ed en este momento ...


Después de una noche de arrancarme el cabello, eché un vistazo a la URL de devolución de llamada en la consola de desarrolladores de Twitter .

Ahórrense algunos problemas y no se olviden de configurar esto. No se menciona directamente en RailsCast, aunque Ryan lo pasa brevemente.

Cuando configure la URL de devolución de llamada, no solo ponga //localhost:3000 no funcionará. En su lugar, utilice:

http://127.0.0.1:3000/