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