Rails - Omniauth-facebook App_id 需要错误

Rails - Omniauth-facebook App_id required error

我有兴趣学习使用 rails 的 omniauth 身份验证,所以我查看了不同的指南,其中也包含 Railscast #360。

当我使用 developers.facebook.com 创建自己的应用程序时,它会为我创建一个 App_id 和秘密。我在线设置了应用程序并创建了一个基本的 rails 应用程序,该应用程序仅使用 Ryan Bates 指南中的步骤。

这是我的 omniauth.rb 文件,它生成了我收到的错误,

 OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['875829959136178'], ENV['<app_secret>']
end

我试过用

provider :facebook, ENV['FACEBOOK_875829959136178'], ENV['FACEBOOK_<app_secret>']

还有。

当我调用 http://localhost:3000/auth/facebook 时,我收到一个错误,指出 "the parameter app_id is required".

我该如何传递这个错误,

看来你误解了什么是ENV。 ENV[xxx] 是一个 ruby 方法,它检索环境变量 xxx 的值。因此,您的代码片段中的 ENV['875829959136178'] 会尝试检索环境变量 875829959136178 的值。很可能您没有将 app_id 设置为环境变量 875829959136178,因此 ENV['875829959136178'] returns 为零。 provider 是一种采用 app_id 和 app_secret 的方法,但是由于您将 nil 作为 app_id,它声称甚至没有给出 app_id虽然这是必需的。

假设您的 app_id 是 875829959136178,您的 app_secret 是 APP_SECRET。让您的应用正常运行的最简单方法是将它们作为字符串提供。

provider :facebook, "875829959136178", "APP_SECRET"

不过,您应该注意,从安全角度来看,将您的应用程序 ID 和机密作为纯文本放在源代码中是不可取的。您应该通过阅读 this, or use gems like dotenv.

等文章来了解如何设置环境变量