2012-07-09 5 views
7

Me estoy haciendo (twitter) Authentication failure! invalid_credentials: OAuth::Unauthorized, 401 Unauthorized error después de lomo de éxito de Twitter y la página se redirige a la página de registrofallo de autenticación: idear + + OmniAuth Twitter

Esta es la configuración de la aplicación

routes.rb

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } 

devise.rb

config.omniauth :twitter, "KEY", "SECRET" 

omniauth_callbacks_controller.rb

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 
    def twitter 
    auth = env["omniauth.auth"] 
    Rails.logger.info("auth is **************** #{auth.to_yaml}") 
    @user = user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.new 
    if @user.persisted? 
     flash[:notice] = I18n.t "devise.omniauth_callbacks.success" 
     sign_in_and_redirect @user, :event => :authentication 
    else 
     session["devise.twitter_uid"] = auth["uid"] 
     redirect_to new_user_registration_url 
    end 
    end 
end 

user.rb

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :token_authenticatable, :confirmable, 
    # :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, :omniauthable 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid 
    # attr_accessible :title, :body 
end 

index.html.erb

<h3>Home</h3> 

<%if user_signed_in? %> 
    <div><%="Welcome #{current_user.email}"%></div> 

<div><%=link_to "Logout", destroy_user_session_path, method: :delete%></div> 

<%else%> 
<div><%=link_to "Sign in twitter", user_omniauth_authorize_path(:twitter)%></div> 
<%end%> 

consola ingrese

Started GET "https://stackoverflow.com/users/auth/twitter" for 127.0.0.1 at 2012-07-09 18:58:16 +0530 
(twitter) Callback phase initiated. 
(twitter) Callback phase initiated. 
(twitter) Authentication failure! invalid_credentials: OAuth::Unauthorized, 401 Unauthorized 

Started GET "https://stackoverflow.com/users/auth/twitter/callback?oauth_token=rLCEqgAWPtoIzce475sacKwoqU5baEdz0JnmldXE&oauth_verifier=xYPoz2LZGHQlmz4akoVGkarPtZTebCOmeWzPUqLcPA" for 127.0.0.1 at 2012-07-09 18:58:48 +0530 
Processing by Users::OmniauthCallbacksController#failure as HTML 
    Parameters: {"oauth_token"=>"rLCEqgAWPtoIzce475sacKwoqU5baEdz0JnmldXE", "oauth_verifier"=>"xYPoz2LZGHQlmz4akoVGkarPtZTebCOmeWzPUqLcPA"} 
Redirected to http://localhost:3000/users/sign_in 

URL de devolución de llamada en dev.twitter.com Antes era http://127.0.0.1:3000. De Devise, Omniauth and Twitter Lo cambié a http://127.0.0.1:3000/auth/twitter/callback pero sigo recibiendo el error

¿Alguien podría ayudar aquí a solucionar el problema?

Gracias, Amit Patel

+0

¿Tiene la clave y el secreto correctos en 'devise.rb'? –

+0

Sí. Lo he configurado correctamente Hoy identifiqué el problema. También configuré el rastrillo como se sugiere en la respuesta a continuación. Simplemente eliminé omniauth.rb y reinicié el servidor y comenzó a funcionar. –

Respuesta

21

Encontré el problema. He configurado proveedores en devise.rb y omniauth.rb. Simplemente eliminé omniauth.rb y comenzó a funcionar.

+3

¿Cómo se supone que un mortal lo sepa? Debería haber un nuevo deporte olímpico, la eliminación de errores de extremo a extremo. –

+0

Wow; error interesante, si es? ¿Por qué esto es tan? ¿Por qué hay una complicación si tienes los archivos de configuración 'devise.rb' y' omniauth.rb'? –

+0

¡Guau!Gracias por su respuesta automática: D –

1

trate de poner su Twitter código clave en un archivo en la carpeta de omniauth.rb initilizers. De esta manera:

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :twitter, 'KEY', 'SECRET' 
end 

por: https://github.com/intridea/omniauth La autenticación con twitter, después de todo, viene a través de OmniAuth, no concebir.

¡Buena suerte! @thatdankent

+0

gracias @thatdanketnt. Descubrí el problema. También configuré middleware de rastrillo omniauth como lo sugirió. Simplemente eliminé omniauth.rb y funcionó de mí. –

Cuestiones relacionadas