设计omniauth-facebook redirect_uri不是绝对的URI

非常感谢你的建议。 我迁移到Heroku ,我有facebook omniauth身份validation的以下问题。 当我使用facebook进行身份validation时, 回调URL不起作用,我会收到以下日志错误消息发送到主页https://barteringapps.herokuapp.com/#_=_

 "redirect_uri isn't an absolute URI. Check RFC 3986.","type":"OAuthException","code":191,"fbtrace_id":"BT1wrRRo64m" method=GET path="/" host=barteringapps.herokuapp.com request_id=8913218f-703d-4da0-9388-f59d3a97bb69 fwd="81.171.81.200" dyno=web.1 connect=0ms service=11ms status=200 bytes=13425 

开发中 ,当我在devise.rb中设置callback-url并在facebook App设置中设置http://127.0.0.1:5000/users/auth/facebook/callback时function正常工作

所以给出一个更详细的日志 (我省略了不重要的信息):

  1. 我点击登录链接

     method=GET path="/users/sign_in" host=barteringapps.herokuapp.com fwd="81.171.81.200" status=200 
  2. 我点击登录facebook

     method=GET path="/users/auth/facebook" host=barteringapps.herokuapp.com fwd="81.171.81.200" status=302 INFO -- omniauth: (facebook) Request phase initiated. 
  3. 从facebook回调,我注意到该路径不包括我的主机

     method=GET path="/users/auth/facebook/callback?code='sometoken'" host=barteringapps.herokuapp.com fwd="81.171.81.200" 

我已经搜索了Stackoverflow的解决方案,我按照这个说明设计了omniauth-facebook redirect_uri Url必须绝对

  1. 我补充说:client_options
  2. 我在devise.rb中配置了这样的绝对路径

     callback_url: ENV['SERVER_ROOT']+'/users/auth/facebook/callback' 
  3. 在heroku设置中,我添加了SERVER_ROOT env变量

我还有以下疑问,因为我在env Varibles中遇到很多问题,我为我的开发安装了foreman gem。 Foreman作为我的网络服务器工作,并从env文件加载ENV变量。 我还有一个带有以下代码的Procfile:

 web: bundle exec rails s .env Procfile 

问题是生产仍然使用puma并且没有Procfile

 => Booting Puma => Rails 5.0.1 application starting in production on http://0.0.0.0:21255 => Run `rails server -h` for more startup options [4] Puma starting in cluster mode... 

我在Brasilian Rails Google Groups社区中找到了解决方案。 我用英文阅读翻译的post,发现了以下问题。

在我的config/enfironments/production.rb文件中

 config.action_mailer.default_url_options = { host: 'barteringapps.herokuapp.com' } 

我通过将https://添加到地址来解决此问题。 这是代码:

 config.action_mailer.default_url_options = { host: 'https://barteringapps.herokuapp.com' } 

现在Facebook登录工作 。 这是我发现问题的讨论: https : //groups.google.com/d/topic/rails-br/PqMHviahB50/discussion

该post的作者是Diogo Azevedo Gouveia