Rails: no se pudo autenticar en Facebook porque "credenciales no válidas"
He integrado omniauth-facebook utilizandohttps://github.com/plataformatec/devise/wiki/OmniAuth%3a-Overview. Pero me estoy equivocando de:
Could not authenticate you from Facebook because "Invalid credentials".
Y en los registros, obteniendo esto:
Authentication failure! invalid_credentials: OAuth2::Error, : {"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
Tengo el dispositivo instalado. Cuando hago clic en el enlace de inicio de sesión de Facebook, vuelve al dispositivo "www.mealnut.com/user/sign_in#="y da el error anterior. Comprobé la solución para" Credenciales no válidas "enhttps://github.com/plataformatec/devise/wiki/OmniAuth%3a-Overview y como se menciona allí, mi aplicación es el conjunto de encabezado para Tipo de aplicación = Web. No entiendo por qué no está funcionando.
También mi aplicación está pendiente de revisión de facebook. Pero no creo que esté relacionado con este error. Las siguientes son las cosas que hice para omniauth-facebook:
Gemfile contiene:
gem "omniauth", "~> 1.1.4"
gem 'omniauth-facebook', '1.4.1'
En el modelo de usuario, añadido:
devise :omniauthable, :omniauth_providers => [:facebook]
attr_accessible :provider, :uid
def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
user = User.where(:provider => auth.provider, :uid => auth.uid).first
unless user
user = User.create(name:auth.extra.raw_info.name,
provider:auth.provider,
uid:auth.uid,
email:auth.info.email,
password:Devise.friendly_token[0,20]
)
end
user
end
devise.rb
require "omniauth-facebook"
config.omniauth :facebook, "APP_ID", "APP_SECRET", :scope => "offline_access, email"
omniauth.rb:
OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'], {:provider_ignores_state => true}
end
route.rb:
devise_for: user,: controllers => {: omniauth_callbacks => "omniauth_callbacks"}
Controlador Omniauth:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
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
¿Alguien puede ayudar en esto?