2011-12-06 22 views
15

He intentado autenticar a los usuarios que usan la gema twitter-omniauth para los últimos días, pero no han tenido éxito. (Autenticación con facebook funciona perfectamente)OAuth :: No autorizado 401 int twitter-omniauth gema

Me siguen recibiendo 401 error no autorizado.

Busco a través de stackoverflow, pero ninguna de las respuestas pudo resolver mi problema.

Llego al inicio de sesión de twitter cuando intento http://127.0.0.1/users/auth/twitter. Me conecto y me redirigen al http://127.0.0.1/users/auth/twitter/callback y aparece un error no autorizado.

debajo de la URL de devolución de llamada que han entrado en Twitter

http://127.0.0.1/users/auth/twitter/callback

rake routes salida

new_user_session GET /users/sign_in(.:format)    {:action=>"new", :controller=>"devise/sessions"} 
       user_session POST /users/sign_in(.:format)    {:action=>"create", :controller=>"devise/sessions"} 
     destroy_user_session DELETE /users/sign_out(.:format)    {:action=>"destroy", :controller=>"devise/sessions"} 
     user_omniauth_callback  /users/auth/:action/callback(.:format) {:action=>/twitter|facebook/, :controller=>"users/omniauth_callbacks"} 
       user_password POST /users/password(.:format)    {:action=>"create", :controller=>"devise/passwords"} 
      new_user_password GET /users/password/new(.:format)   {:action=>"new", :controller=>"devise/passwords"} 
      edit_user_password GET /users/password/edit(.:format)   {:action=>"edit", :controller=>"devise/passwords"} 
          PUT /users/password(.:format)    {:action=>"update", :controller=>"devise/passwords"} 
    cancel_user_registration GET /users/cancel(.:format)    {:action=>"cancel", :controller=>"devise/registrations"} 
      user_registration POST /users(.:format)      {:action=>"create", :controller=>"devise/registrations"} 
     new_user_registration GET /users/sign_up(.:format)    {:action=>"new", :controller=>"devise/registrations"} 
     edit_user_registration GET /users/edit(.:format)     {:action=>"edit", :controller=>"devise/registrations"} 
          PUT /users(.:format)      {:action=>"update", :controller=>"devise/registrations"} 
          DELETE /users(.:format)      {:action=>"destroy", :controller=>"devise/registrations"} 
         login  /login(.:format)      {:action=>"login", :controller=>"home"} 
         root  /         {:controller=>"home", :action=>"index"} 

Si necesita más información, voy a proporcionar. Por favor ayúdame a solucionar esto.

+0

Robert - ¿Ha comprobado que el ID de su aplicación y el secreto de la aplicación son correctos en su inicializador? ¿Coinciden con lo que Twitter muestra para su aplicación local? – TallGreenTree

+0

Además, ¿podría publicar el código que tiene para el controlador de usuarios/omniauth_callbacks? – TallGreenTree

+0

@TallGreenTree He comprobado varias veces la id. De aplicación y la aplicación secreta muchas veces ... es la misma ... – robert

Respuesta

13

estoy bastante seguro de que me encontré con problemas con esto cuando era procedente de localhost ...

This article dice lo permiten, pero si la memoria no me falla, tuve que usar una URL de acceso externo. Cuando estaba probando mis cosas, usé DynDns y abrí un puerto en mi enrutador.

+5

Si está utilizando su servidor local. Funciona si usa un acortador de url. – Benjamin

+0

Sí, utilicé ngrok y funcionó como un amuleto. Gracias ejlevin1 –

17

Tuve este problema hoy y encontré que tenía que establecer una URL de devolución de llamada en la configuración en dev.twitter.com en mi solicitud. Así que compruebe que ha establecido una configuración de URL de devolución de llamada, la configuré en mi dirección de producción deseada y cuando la ejecuté en el modo dev localmente redireccionó bien.

Menciona debajo del cuadro de entrada de url de devolución de llamada que si se deja en blanco, restringirá la aplicación de utilizar URL de devolución de llamada.

+1

que he mencionado en la pregunta que he dado la devolución de llamada url ... – robert

+1

tuve este mismo problema y proporcionando la URL de devolución de llamada lo arregló. Creo que es necesario que el dominio sea el mismo que el dominio para el que está registrada la aplicación. Por lo tanto, para el sitio web: tengo http://www.example.com y para la URL de devolución de llamada: http://www.example.com/auth/twitter/callback. Así que Kalvir está diciendo que no use http://127.0.0.1 como URL base, use lo que ponga en el campo Sitio web cuando haya registrado su aplicación. – wuliwong

2

En mi caso utilicé "Token de acceso" y el secreto en lugar de "Clave de consumidor" causó este error.

+0

Al usar twitter-omniauth debe usar el token de acceso, no la "clave del consumidor" – wspruijt

1

En mi caso, estábamos usando la gema Timecop y estaba causando que la gema omniauth-twitter fallara debido a un conflicto con el tiempo del servidor local establecido por timecop.

1

Me encontré con este problema porque había puesto mis llaves en mi entorno en ~/.bash_profile, pero nunca lo obtuve. Una vez que abrí una nueva terminal funcionó bien.

1

Aparentemente, Twitter agregó una casilla de verificación en la pestaña Configuración de la aplicación.

En la parte inferior del panel "Detalles de la aplicación", debe marcar la casilla que dice "Permitir que esta aplicación se use para iniciar sesión con Twitter".

Después de comprobarlo y esperar unos minutos mientras el cuadro de alerta me dice que todo comenzó a funcionar.

Cuestiones relacionadas