Rails:Omniauth - “参数app_id是必需的”

时间:2015-02-18 23:42:49

标签: ruby-on-rails ruby facebook omniauth

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

omniauth.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

然后当我转到http://localhost:3000/auth/facebook时,我收到错误消息The parameter app_id is required

2 个答案:

答案 0 :(得分:9)

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

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

export FACEBOOK_APP_ID='your_id_here'
export FACEBOOK_SECRET='your_secret_here'

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

最后,在您的omniauth.rb初始值设定项中输入完全符合:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET']
end

例如,详细了解主题here

您也可以使用dotenv gem来处理环境变量。

答案 1 :(得分:3)

你可以像dgilperez所说的那样在ENV变量上设置键,或者删除ENV并直接写它。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, 'FACEBOOK_APP_ID', 'FACEBOOK_SECRET'
end

如果您将源代码放在公共仓库(如github)中,请使用ENV变量,因为它更安全。