2011-09-21 107 views
1

我正在使用的應用程序已重寫規則以確保用戶始終使用https。在我的fb應用程序設置中,我可以定義使用https的安全和非安全畫布頁面(因此不會發生重定向),但我無法在應用程序的選項卡頁面上執行相同操作。據我所知,FB使用用戶運行的任何協議。

因此,當用戶通過http點擊應用程序時,mod_rewrite將用戶重定向到https版本。重定向不會傳遞表單數據。有一個線索,我發現使用代理重定向進行了討論,但似乎沒有工作。

是否有一些配置設置可以用來將我的signed_request $ _POST變成$ _GET?或者是有一些API調用我可以讓signed_request? facebook-> getSignedRequest()只是在$ _REQUEST中查找,由於重定向而不包含發佈數據。

回答

0

我會在PHP(使用$_SERVER['HTTPS'])而不是通過.htaccess做重定向,並在首次將簽名的請求數據保存到用戶的會話後執行此操作。

0

我在這裏有同樣的問題。當我使用HTTPS訪問該選項卡時,我得到了signed_request,因爲沒有發生重定向。

我在同一臺服務器上運行另一個Facebook應用程序,它使用htaccess文件確保文件通過HTTPS提供。所以,我最終做的是確保我正在使用的子文件夾從重寫中排除。像這樣:

RewriteCond %{THE_REQUEST} !/my-app-folder 

然後,在我的PHP中,我檢查引用是否是HTTP。如果不是,我將標題更改爲我的應用程序的HTTPS版本。像這樣:

$referer = $_SERVER['HTTP_REFERER']; 
if (substr($referer,0,5) != 'https') { 
    header("Location: https://www.facebook.com/myapp?sk=app_xxxxxxxxxxxxxx"); 
} 

這可能不是傻瓜證明,但一旦我點擊按鈕,我一定會得到我需要的結果。我也在可怕的IE中測試了它,它似乎也在那裏工作。

0

有些瀏覽器重定向你的要求自動HTTPS,如果你已經在這個特定的網站上HTTPS,所以如果你是在HTTP模式下在Facebook上有情況:您的應用程序的

Facebook的請求的HTTP版本,瀏覽器重定向這個請求的Facebook的https和POST數據,因此signer_request在這個過程中沒有...

我看到這個問題在鉻23,如果你刪除瀏覽數據(特別是「取消授權內容許可證」)應用程序應該跑回來http