【问题标题】:Facebook OAuth with Devise in Ruby on RailsFacebook OAuth 与 Ruby on Rails 中的 Devise
【发布时间】:2015-03-03 16:17:11
【问题描述】:

在花了 30 多个小时试图解决这个问题并搜索了地球的各个角落之后,我在这里发布了我的第一个问题。

无论我尝试什么,我都会得到

'需要参数app_id'

我已经从 https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview 关注文档到 T

以下是我认为最重要的部分……有什么我可能遗漏的想法吗?

config/initializers/devise.rb

config.omniauth :facebook, ENV["FACEBOOK_APP_ID"], ENV["FACEBOOK_APP_SECRET"], scope: 'user'

我已检查系统上的 env 参数是否正确。

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.new_with_session(params, session)
    super.tap do |user|
      if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["raw_info"]
        user.email = data["email"] if user.email.blank?
      end
    end
  end

  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

【问题讨论】:

  • 看起来,ENV["FACEBOOK_APP_ID"] 返回空白或零。只需尝试仔细检查您是否从 ENV 变量中获取值,尝试在使用前打印它..
  • 是的,不知道为什么,如果我从控制台回显 $FACEBOOK_APP_ID 效果很好。

标签: ruby-on-rails ruby facebook devise omniauth


【解决方案1】:

试试这个:

config.omniauth :facebook, "xxxxx", "xxxx"

使用 config/initializers/devise.rb 中的实际值对我有用。

【讨论】:

  • 哇,我不知道为什么 OAuth 不能使用 ENV 变量......这真的很糟糕。然后我必须找到另一种方式来存储它们,因为我计划将这个项目推送到 Github。
  • 好吧 Figaro 工作正常。我仍然对为什么使用带有 export=... 的 ENV 不起作用感到目瞪口呆,因为我已经在其他项目中使用过它。哦,好吧,无论如何,费加罗更方便。我很伤心,我花了这么长时间才让这一切正常工作。一直以来我都以为我在设计设置中跳过了一步哈哈。
  • 太好了,别等30小时再问下一次哈哈。也请不要忘记支持我的回答。谢谢
  • 尽管@RailsOuter 的解决方案有效,但首选方法是使用ENV 变量。背后的原因是,1)您可以将敏感信息移出代码库,2)通过使用不同的 ENV 变量轻松管理不同的环境(例如:developmentproduction)。我个人更喜欢使用 dotenv (github.com/bkeepers/dotenv)
猜你喜欢
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
相关资源
最近更新 更多