2012-02-17 67 views
2

我们有一个Facebook应用程序实现为页面中的标签。但是,对于某些用户来说,它确实存在奇怪的重定向。但这并不是每个人都会发生的,这就是为什么我无法把头围绕在它身上。Facebook Sinatra应用程序做奇怪的重定向

当我以未登录的Chrome隐身模式登录到our page时,它似乎也发生在我身上。究竟会发生什么?

页面左侧的多个选项卡是我们的应用程序选项卡。但是,点击它们时似乎出现了问题。我总是得到相同的首页,这是'Socialabs'页面。我的Heroku的日志表明这一点:

2012-02-17T14:29:09+00:00 app[web.1]: 193.191.150.2 - - [17/Feb/2012 14:29:09] "POST /small HTTP/1.1" 302 - 0.0025 
2012-02-17T14:29:09+00:00 heroku[router]: POST socialapp.herokuapp.com/small dyno=web.1 queue=0 wait=0ms service=28ms status=302 bytes=0 
2012-02-17T14:29:09+00:00 app[web.1]: 193.191.150.2 - - [17/Feb/2012 14:29:09] "GET/HTTP/1.1" 302 - 0.0009 
2012-02-17T14:29:09+00:00 heroku[router]: GET socialapp.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=10ms status=302 bytes=0 
2012-02-17T14:29:09+00:00 app[web.1]: 193.191.150.2 - - [17/Feb/2012 14:29:09] "GET /tab HTTP/1.1" 200 2173 0.0112 
2012-02-17T14:29:09+00:00 heroku[router]: GET socialapp.herokuapp.com/tab dyno=web.1 queue=0 wait=0ms service=14ms status=200 bytes=2173 

什么似乎如下当用户访问,在这种情况下,“小”标签是发生:

一个POST发生在我们的应用程序的/small路线。这是可以预料的。但是,我们不使用该路线的erb模板,而是使用另一个重定向:/。此路线重定向到/tab,如我们的路线中所述。

我想不通为什么/small重定向到/。该路线在我们的sinatra应用中看起来像这样:

get "/contact" do 
    erb :contact 
end 

post "/contact" do 
    #on fb post we redirect to get route and display view 
    redirect '/contact' 
end 

我真的不知道这一点。我app.rb文件的完整内容可以在这个要点中找到:提前https://gist.github.com/1864561

感谢

+2

我不知道Facebook api或他们的应用程序是如何工作的,但它看起来像是''before''过滤器,你已经将任何没有https请求重定向到'/'。 – matt 2012-02-19 16:54:35

+0

嘿,那工作。过滤前我完全忽略了这一点。你可以张贴这个作为答案,所以我可以给你的代表?非常感谢。我非常恼火,我真的不知道该怎么办了。显然未登录的用户或没有安全浏览的用户会被重定向到'/'。是我认为需要的原始heroku创建的应用程序的剩余部分。可能不会 :( – cabaret 2012-02-19 17:08:38

回答

2

从你app.rb您有:

before do 
    # HTTPS redirect 
    if settings.environment == :production && request.scheme != 'https' 
    redirect "https://#{request.env['HTTP_HOST']}" 
    end 
end 

我不知道Facebook的API或他们的应用程序如何工作,但看起来像这个过滤器可以将任何没有https请求重定向到/