【问题标题】:Could not authenticate you from Facebook because "No authorization code"无法通过 Facebook 对您进行身份验证,因为“没有授权码”
【发布时间】:2018-04-03 02:21:54
【问题描述】:

我正在尝试使用 devise 在我的应用上设置 Facebook 登录...但是我遇到了问题。

该网站将用户重定向到 Facebook,然后说:

“无法加载 URL:此 URL 的域不包含在应用的域中。要能够加载此 URL,请将应用的所有域和子域添加到应用设置中的应用域字段。

它返回到应用程序并说:

无法通过 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/”。

【问题讨论】:

    标签: ruby-on-rails ruby facebook devise


    【解决方案1】:

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

    然后用测试密钥替换您的主要 Facebook 密钥。

    还要确保您的“有效 OAuth 重定向 URI”设置为

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

    这是为我排序的。

    祝你好运

    【讨论】:

    • 请提供有关您修复的更多详细信息,您将在未来获得此解决方案的积分,因为这是许多其他开发人员非常常见的问题
    • 确定我现在不在电脑旁,我会在几个小时内更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2012-04-01
    • 2018-12-28
    • 1970-01-01
    • 2011-08-04
    相关资源
    最近更新 更多