Ruby on rails Facebook针对www.domain.com而非domain.com的重定向URI无效
我在heroku上有一个rails应用程序,我在custom.com域名上有它。我将我的facebook应用程序画布url设置为domain.com,当我点击facebook登录时,它可以工作,但当我访问www.domain.com时,它会给我: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
{
"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确实允许您创建重定向记录无需将域命名为您的站点,然后在应用程序中处理重定向。您找到解决方案了吗?