我试图通过设计在我的应用程序上设置Facebook登录...但是我遇到了问题。
该网站将用户重定向到Facebook然后说:
“无法加载网址:此网址的域未包含在应用的域中。要加载此网址,请将应用的所有域和子域添加到应用设置中的应用域名字段中。
它返回app并说:
无法通过Facebook验证您,因为“没有授权码”。
这是我的代码,用户型号:
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable, omniauth_providers: [:facebook]
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.email = auth.info.email
user.provider = auth.provider
user.uid = auth.uid
user.password = Devise.friendly_token[0,20]
end
end
end
我的设计.rb:
config.omniauth :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'],
scope: 'email, public_profile', info_fields: 'email, first_name, last_name'
路线:
Rails.application.routes.draw do
devise_for :users, controllers: {omniauth_callbacks: 'users/omniauth_callbacks' }
authenticated :user do
root 'home#index', as: 'authenticated_root'
end
devise_scope :user do
root 'devise/sessions#new'
end
end
我的omniauth控制器:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
@user = User.from_omniauth(request.env["omniauth.auth"])
sign_in_and_redirect @user
end
end
谢谢
我将添加我在本地主机上运行此功能,在Facebook的开发人员部分,我已在应用领域部分添加了“http://localhost:3000/”。
答案 0 :(得分:0)
在左上角的Facebook控制台中,点击您的应用名称,然后为您的网站创建一个测试应用。
然后用测试键替换你的主Facebook密钥。
另外,请确保您的有效OAuth重定向URI&#39;设置为
http://localhost:3000/users/auth/facebook/callback
这是为我排序的。
祝你好运