Ruby on rails 设计omniauth facebook重定向Url必须是绝对的

Ruby on rails 设计omniauth facebook重定向Url必须是绝对的,ruby-on-rails,ruby,facebook,ruby-on-rails-3,devise,Ruby On Rails,Ruby,Facebook,Ruby On Rails 3,Devise,我的Rails应用程序当我尝试将gem“omniauth facebook”与Desive集成时,我在facebook上收到以下错误:重定向uri URL必须是绝对的 以下是我的配置 设计 config.omniauth :facebook, "ID", "SECRET",callback_url: "/auth/facebook" My user.rb模型: class User < ActiveRecord::Base # Include default devise modul

我的Rails应用程序当我尝试将
gem“omniauth facebook”
与Desive集成时,我在facebook上收到以下错误:
重定向uri URL必须是绝对的

以下是我的配置

设计

config.omniauth :facebook, "ID", "SECRET",callback_url: "/auth/facebook"
My user.rb模型:

class User < ActiveRecord::Base
  # 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.password = Devise.friendly_token[0,20]
        user.name = auth.info.name   # assuming the user model has a name
        user.image = auth.info.image # assuming the user model has an image
      end
    end
end
和控制器OmniAuthCallbackController

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

  def failure
    redirect_to root_path
  end
end
class Users::OmniAuthCallbackController:authentication#如果未激活@user,将引发此错误
如果是导航格式,设置flash消息(:notice,:success,:kind=>“Facebook”)?
其他的
会话[“designe.facebook_data”]=request.env[“omniauth.auth”]
将\重定向到新\用户\注册\ url
结束
结束
def故障
将\重定向到根\路径
结束
结束
我在这里遗漏了什么?

添加

:client_options => {:ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'}} 
通过初始化器中的
config.omniauth
为我解决了这个问题

我还将
路径
配置为绝对路径,如下所示:

callback_url: ENV['SERVER_ROOT']+'/users/auth/facebook/callback'

我使用的是windows机器。auth只需返回字符串
http://localhost:3000/?code=AQA5fDoNEqTvJpZ-p
我不知道如何在Windows tbh上访问CA证书。也许我的答案的第二部分对你有帮助。如果现在得到这个错误
未初始化的常量用户
,只需修复:ca_文件请在你的问题中更新你的代码。在我看来,这个错误可能与您以前的问题无关。@d3bug3r您是如何解决这个问题的?我尝试设置一个绝对回调url,但遇到了以下问题。在我的Heroku日志中,我得到了以下回调路径=“/users/auth/facebook/callback?code=somecode”我打开了一个关于stackoverflow的问题,你能帮我吗?
callback_url: ENV['SERVER_ROOT']+'/users/auth/facebook/callback'