2012-01-24 128 views
0

我已經創建了一個應用程序作爲頁面選項卡。如果有人直接打開網站網址,我需要重定向到Facebook應用。爲此,我需要檢查地址欄的內容,如果它不包含www.facebook.com,我將重定向到facebook-app url。但是,問題是,在Facebook的iframe內我無法獲得地址欄的內容。通過應用程序網站重定向到Facebook應用程序

如果有人直接訪問我的網站url,你能否告訴我一個很好的方法來啓用重定向到fb-app?

回答

2

可能實現這一目標的最簡單的方法,就是做下一個檢查中JavaScript

if (window.top !== window){ 
    window.location = 'http://facebook.com/YOUR_PAGE?sk=v_YOUR_APP_ID' 
} 
+0

我的確在最初的代碼錯誤這應該是''===不'!==' –

0

Facebook上張貼簽名的請求參數當您在粉絲專頁上打開一個應用程序。

您可以檢查該參數是否爲空。

在PHP中,

if(isset($_REQUEST["signed_request"]){ 
// Opened in facebook 
}else{ 

//opened outside facebook. 
} 

在asp.net

if(Request.Form["signed_request"] !=null) 
    { 
     // Opened in facebook 
} 
else 
{ 
// opened outside facebook. 
} 
+0

BU頁面我不認爲這可以在我的應用程序的每個頁面中使用,因爲簽名的請求只在第一頁上,不是嗎? – akshay3004

+0

設置一個cookie,當你得到一個signed_request.And檢查它後面的頁面。 – Jashwant

1

如果你是想重定向到一個標籤,這樣做更完整的方法是檢查「頁」參數只能通過已簽名的頁面選項卡請求發送。

原因是,只檢查簽名的請求,將允許用戶訪問一個網站的畫布你520px標籤的應用程序(即https://apps.facebook.com/yourapp你想要的東西可能不是。

因此,例如

$fb = new Facebook(array(
          'appId' => <your_app_id>, 
          'secret' => <your_app_secret>); 
    $sr = $fb -> getSignedRequest(); 

,然後重定向用戶,因爲他們打

if (!($sr['page'])) { 
     die('<script>window.top.location = "<your_tab_url>"</script>'); 
    }; 
相關問題