Facebook无效的www.domain.com重定向URI,而不是domain.com

时间:2011-07-27 18:19:18

标签: ruby-on-rails facebook facebook-graph-api heroku

我有一个在heroku上的rails应用程序,我有一个自定义的.com域名。我将我的facebook app canvas url设置为domain.com,当我使用facebook登录时,它可以工作,但是当我到达www.domain.com时它会给我:

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

我如何在heroku修复此问题?

5 个答案:

答案 0 :(得分:1)

Codeglot对我来说并不适合,但是使用他的元素,这样做了。

在你的application_controller中:

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

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

答案 1 :(得分:0)

您需要将www.domain.comdomain.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

确保网址被正确替换,但应该这样做。

答案 2 :(得分:0)

我只想在您的域名托管服务商(GoDaddy,NameCheap等等)上设置网址重定向记录,无论您通过何种方式购买域名,都可以将所有www.yourapp.com重定向到yourapp.com,这一切都会发生在DNS服务器甚至到达您的应用服务器之前。

这是我最近回答的一个类似的问题(当他们希望所有yourapp.com请求重定向到www.yourapp.com但其完全相同的想法时,答案是相反的情况):{{3 }}

顺便说一句,这个方法会自动将它们重定向到末尾附加的任何路径。因此,点击www.yourapp.com/something会将其重定向到yourapp.com/something

答案 3 :(得分:0)

这是我能找到的唯一一个没有导致无限重定向或其他问题的解决方案。希望它有所帮助。

Force 'www' in Rails3 hosted on Heroku without .htaccess

答案 4 :(得分:0)

如果要重定向保持当前路径,可以在application_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