Foros del Web » Programando para Internet » Ruby »

[SOLUCIONADO] Invalid credentials en OmmniAuth y Devise en rails

Estas en el tema de Invalid credentials en OmmniAuth y Devise en rails en el foro de Ruby en Foros del Web. Hola amigos, estoymontando una aplicacion en heroku con devise y OmniAuth para hacer login con facebook, esto es lo que he hecho hasta ahora: Agregue ...
  #1 (permalink)  
Antiguo 12/08/2014, 01:04
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Invalid credentials en OmmniAuth y Devise en rails

Hola amigos, estoymontando una aplicacion en heroku con devise y OmniAuth para hacer login con facebook, esto es lo que he hecho hasta ahora:

Agregue la gema al gemfile (devise ya lo tenia y me funciona perfecto)

Código:
gem 'omniauth-facebook'
hice la migracion

Código:
rails g migration AddColumnsToUsers provider uid
rake db:migrate
Agregue esta linea a config/initializers/devise.rb le puse el id y secret de mi aplicación en facebook

Código:
config.omniauth :facebook, "APP_ID", "APP_SECRET"
en el modelo users agregue la opcion de omnniutable

Código:
devise :omniauthable, :omniauth_providers => [:facebook]
En la vista puse el link para ingresar por FB

Código:
<%= link_to "Sign in with Facebook", user_omniauth_authorize_path(:facebook) %>
En las rutas puse esto para los callbacks

Código:
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
Cree el controlador app/controllers/users/omniauth_callbacks_controller.rb

Código:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def facebook
    # You need to implement the method below in your model (e.g. app/models/user.rb)
    @user = User.from_omniauth(request.env["omniauth.auth"])

    if @user.persisted?
      sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
      set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format?
    else
      session["devise.facebook_data"] = request.env["omniauth.auth"]
      redirect_to new_user_registration_url
    end
  end
end
Y agregue esto a mi modelo User

Código:
def self.from_omniauth(auth)
  where(auth.slice(:provider, :uid)).first_or_create do |user|
    user.email = auth.info.email
    user.password = Devise.friendly_token[0,20]
  end
end
Y me aparece este error:

Código:
Could not authenticate you from Facebook because "Invalid credentials".
Del lado de facebook por lo que veo todo esta bien, no se que me falte hacer o que estoy haciendo mal.

Lo tengo montado en heroku en http://hicking.co

Gracias
  #2 (permalink)  
Antiguo 12/08/2014, 12:22
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Respuesta: Invalid credentials en OmmniAuth y Devise en rails

Solucionado, todo el problema se debía a que en mi app de facebook la tenia configurada como aplicación nativa o de escritorio, desactive esta opción y listo. xD

Etiquetas: aplicacion, controlador, controller, funcion, invalid, rails
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:44.