我有一个应用程序,它只使用Facebook作为身份验证提供程序,并正确设置生产模式的回调。为了实现这一点,您可以为Facebook应用提供站点URL和站点域以进行回调,在我的情况下,它分别为http://appname.heroku.com
和appname.heroku.com
。
问题是我的控制器设置为仅允许经过身份验证的会话,因此我无法在开发模式下查看我的应用程序,因为Facebook应用程序的域显然尚未设置为localhost。
如何在不改变Facebook设置的情况下解决这个问题?
答案 0 :(得分:10)
使用域localhost:3000
创建另一个Facebook应用以进行开发和创建
config.yml
目录中的config
development:
facebook_api_key: 656756786867868
facebook_api_secret: 4sdffdh6u345436
production:
facebook_api_key: 45778799
facebook_api_secret: fghjkbbcbcbcbcb
现在将load_config.rb添加到初始化文件夹
# load config
AppConfig = YAML.load_file(Rails.root.join('config', 'config.yml'))
# Override config options by correct environment
env_options = AppConfig.delete(Rails.env)
AppConfig.merge!(env_options) unless env_options.nil?
最后将其添加到omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, AppConfig['facebook_api_key'], AppConfig['facebook_api_secret']
end
根据导轨环境,它会占用您的钥匙。这就是全部,希望它可以帮到你。
答案 1 :(得分:10)
为什么不在环境文件中创建ENV []变量,并在初始化程序中使用它们:
provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK']
provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET']
对我来说似乎更容易(也更短)。