Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Facebook针对www.domain.com而非domain.com的重定向URI无效_Ruby On Rails_Facebook_Facebook Graph Api_Heroku - Fatal编程技术网

Ruby on rails Facebook针对www.domain.com而非domain.com的重定向URI无效

Ruby on rails Facebook针对www.domain.com而非domain.com的重定向URI无效,ruby-on-rails,facebook,facebook-graph-api,heroku,Ruby On Rails,Facebook,Facebook Graph Api,Heroku,我在heroku上有一个rails应用程序,我在custom.com域名上有它。我将我的facebook应用程序画布url设置为domain.com,当我点击facebook登录时,它可以工作,但当我访问www.domain.com时,它会给我: { "error": { "type": "OAuthException", "message": "Invalid redirect_uri: Given URL is not allowed by the Applic

我在heroku上有一个rails应用程序,我在custom.com域名上有它。我将我的facebook应用程序画布url设置为domain.com,当我点击facebook登录时,它可以工作,但当我访问www.domain.com时,它会给我:

{
   "error": {
      "type": "OAuthException",
      "message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration."
   }
}

我如何在heroku解决这个问题

您需要将
www.domain.com
domain.com
添加到facebook API,或者在控制器中设置重定向,如果您位于
www.domain.com

 before_filter :ensure_domain
 before_filter :get_filter

   def ensure_domain 
    url = request.url
    if url.include?('domain.heroku.com')
        redirect_to url.gsup('domain.heroku.com', 'domain.com')
    eslif url.include?('www.domain.com')
        redirect_to url.gsup('www.domain.com', 'domain.com')        
    end    
   end

确保url被正确替换,但这应该可以做到。

我会在你的域名主机上设置一个url重定向记录(GoDaddy、namescape等,无论你通过谁购买了域名)将所有
www.yourapp.com
重定向到
yourapp.com
,这样所有这些都会在DNS服务器上发生,甚至在它到达您的应用服务器之前

我最近回答了一个类似的问题来处理这个问题(答案是相反的,他们希望所有
yourapp.com
请求重定向到
www.yourapp.com
,但想法完全相同):


顺便说一下,这个方法也会自动将它们重定向到附加到端点的任何路径。所以点击
www.yourapp.com/something
会将它们重定向到
yourapp.com/something
Codeglot的对我来说不太有效,但使用他的元素,这确实有效

在您的应用程序中,请放置:

before_filter :check_url

#redirecting the herokuapp and www version of domain
def check_url
  url = request.url
  if url.include?('appname.herokuapp.com')
    redirect_to ('http://domain.com')
  elsif url.include?('www.domain.com')
    redirect_to ('http://domain.com')        
  end    
end

如果您使用的是竹子而不是雪松,那么将“herokuapp”替换为“heroku”

这是我为heroku找到的唯一解决方案,不会导致无限重定向或其他问题。希望能有帮助


如果要重定向保持当前路径,可以在application\u controller.rb中编写如下代码

class ApplicationController < ActionController::Base
  before_filter :check_uri

  def check_uri
    if request.host == "xxx.herokuapp.com" then
      redirect_to request.protocol + "www.xxx.com" + request.fullpath
    end
  end
class ApplicationController
是否可以将他们重定向回他们来自的页面?假设用户在www.domain.com/some-page中键入。他们如何自动返回domain.com/some页面?我在heroku中尝试了这个方法,我得到了一个无限循环重定向,似乎它不能替代重定向在错误的位置。固定的。请确保您在本地进行测试。我尝试过调查这一点,但godaddy没有像namecheap那样的东西。我创建了cname,但它不会导致www.domain.com重定向到域。comI还没有看到很多DNS提供商允许您通过DNS控制面板设置重定向-Zergio确实允许您创建重定向记录无需将域命名为您的站点,然后在应用程序中处理重定向。您找到解决方案了吗?