Facebook Sinatra应用程序做了奇怪的重定向

时间:2012-02-17 15:11:21

标签: facebook redirect heroku sinatra facebook-apps

我们将Facebook应用程序实现为页面中的选项卡。但是,对于某些用户,它会进行奇怪的重定向。但这并不是每个人都会发生的,这就是为什么我无法绕过它。

当我在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

提前致谢

1 个答案:

答案 0 :(得分: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请求重定向到/