Rails-Omniauth facebook App_id必需错误



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

当我用developers.facebook.com创建自己的应用程序时,它会为我创建一个app_id和secret。我将应用程序设置为在线,并创建了一个基本的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,我收到一个错误,指示"参数app_id是必需的"。

如何传递此错误,

您似乎误解了ENV是什么。ENV[xxx]是一个ruby方法,用于检索环境变量xxx的值。因此,代码片段中的ENV['875829959136178']尝试检索环境变量875829959136178的值。很可能您没有将app_id设置为环境变量875829959136178,因此ENV['875829959136178']返回nil。provider是一个使用app_id和app_secret的方法,但由于您将nil作为app_id,因此它声称即使需要app_id也没有给出。

假设您的app_id是875829959136178,app_secret是APP_SECRET。使应用程序工作的最简单方法是将它们作为字符串。

provider :facebook, "875829959136178", "APP_SECRET"

不过,您应该注意,从安全角度来看,将您的应用程序id和机密以纯文本形式放在源代码中是不可取的。您应该通过阅读这样的文章来了解如何设置环境变量,或者使用像dotenv这样的gem。

相关内容

最新更新