我有兴趣学习使用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时,我收到一条错误消息,指示“参数app_id是必需的”。
我如何解决这个错误,
看来您误解了ENV是什么。ENV[xxx]
是一个红宝石方法,它检索环境变量的值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
。使您的应用正常运行的最简单方法是将它们指定为String。
provider :facebook, "875829959136178", "APP_SECRET"
但是,您应该注意,从安全的角度来看,将应用程序ID和密码作为纯文本形式放在源代码中是不可取的。您应该通过阅读此类文章或使用诸如dotenv之类的宝石来学习如何设置环境变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句