Mus*_*maz 5 authentication ruby-on-rails omniauth facebook-authentication omniauth-facebook
我有兴趣学习使用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
Run Code Online (Sandbox Code Playgroud)
我试过用
provider :facebook, ENV['FACEBOOK_875829959136178'], ENV['FACEBOOK_<app_secret>']
Run Code Online (Sandbox Code Playgroud)
也.
当我调用http:// localhost:3000/auth/facebook时,我收到的错误表明"参数app_id是必需的".
我怎么能传递这个错误,
小智 11
你似乎误解了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.使应用程序正常工作的最简单方法是将它们作为String.
provider :facebook, "875829959136178", "APP_SECRET"
Run Code Online (Sandbox Code Playgroud)
但是,您应该注意,从安全角度来看,将您的应用程序ID和秘密作为纯文本放在源代码中是不可取的.您应该通过阅读这样的文章来学习如何设置环境变量,或者使用像dotenv 这样的宝石.
| 归档时间: |
|
| 查看次数: |
3727 次 |
| 最近记录: |