无法通过Facebook验证您,因为“没有授权码”

时间:2017-10-22 12:28:27

标签: ruby-on-rails ruby facebook devise

我试图通过设计在我的应用程序上设置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/”。

1 个答案:

答案 0 :(得分:0)

在左上角的Facebook控制台中,点击您的应用名称,然后为您的网站创建一个测试应用。

然后用测试键替换你的主Facebook密钥。

另外,请确保您的有效OAuth重定向URI&#39;设置为

http://localhost:3000/users/auth/facebook/callback

这是为我排序的。

祝你好运