2012-02-17 44 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請求重定向到/