Rails:Omniauth - "参数app_id是必需的"

rog*_*rat 6 ruby facebook ruby-on-rails omniauth

我正在关注这个railscast教程,在我的rails项目上为facebook身份验证设置omniauth:http://railscasts.com/episodes/360-facebook-authentication?autoplay = true .我进入了4分钟,到目前为止我所做的一切都是捆绑宝石omniauth-facebook并加入,

omn​​iauth.rb

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['my id here...'], ENV['my secret code here...']

end
Run Code Online (Sandbox Code Playgroud)

然后当我去,http://localhost:3000/auth/facebook我得到一个错误说The parameter app_id is required.

dgi*_*rez 9

哦,现在我明白了:你需要定义环境变量来存储你的facebook_app_idfacebook_secret.您可以像这样将它们添加到您的环境中(假设类似unix的系统):

将其添加到~/.bashrc文件的底部(或等效文件):

export FACEBOOK_APP_ID='your_id_here'
export FACEBOOK_SECRET='your_secret_here'
Run Code Online (Sandbox Code Playgroud)

然后打开一个新终端,确保它们在环境中加载.

最后,在您的omniauth.rb初始化程序中,您完全键入:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET']
end
Run Code Online (Sandbox Code Playgroud)

例如,在此处阅读有关该主题的更多信息.

您还可以使用dotenv gem来处理环境变量.