【发布时间】:2012-02-17 15:11:20
【问题描述】:
我们有一个 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
提前致谢
【问题讨论】:
-
我不知道 Facebook api 或他们的应用程序如何工作,但看起来可能是
before过滤器将任何无 https 请求重定向到/。 -
嘿,成功了。我在过滤器之前完全忽略了这一点。您能否将此作为答案发布,以便我可以给您代表?多谢。我对此感到非常恼火,我真的不知道该怎么办了。显然未登录的用户或没有安全冲浪的用户会被重定向到
/。是我认为需要的原始 heroku 创建的应用程序的剩余部分。猜不到:(
标签: facebook redirect heroku sinatra facebook-apps