2014-01-08 49 views
2

我有一個網頁,有時可以從facebook pagetab(不是facebook應用程序)訪問,有時它可以像平常一樣從網頁訪問。我可以檢查某個頁面是否在某個Facebook標籤內?

我知道Facebook通過FB對象嚮應用程序發送了一堆數據,我已經使用了其他一些信息,如滾動。有沒有什麼方法可以找出頁面是否在Facebook頁面中?這是一個iframe,所以我不能只檢查網址。

回答

2

這樣做的標準方法是您需要檢查是否存在簽名請求。這是Facebook發送給你的服務器的POST變量,不幸的是,它不能被JavaScript讀取。有關從簽名請求中讀取數據的信息,請查看this Facebook help page。如果您不想註冊應用程序或解碼數據,則只需檢查$_POST['signed_request']已設置。

但是,經過進一步調查,看起來好像有一種方法可以測試我們是否在JavaScript中的Canvas/Page-tab上。 FB JS SDK具有一個名爲FB.Canvas.getPageInfo的函數。如果你在Canvas或Page-tab中,那麼這個函數會調用你提供的回調函數;如果您在Facebook以外,回叫將不會被觸發:

$('#pageInfo').click(function() { 

    var displayType = 'external'; 

    FB.Canvas.getPageInfo(function(response) { 
    displayType = 'canvas/page-tab'; 
    }); 

    setTimeout(function() { 
    console.log('we are running ' + displayType); 
    }, 1000); 

}); 

回調是異步的,所以您必須適應這一點。此外,我不認爲有辦法檢測頁面標籤或畫布之間的區別。您可以查看getPageInfo的響應中的屬性,但我不認爲Canvas/Page-選項卡中有任何特性。

當然,另一種方法是隻需添加一個額外的參數,以你的畫布和頁面標籤的網址,然後看這些:我想

enter image description hereenter image description here

function getURLParameter(name) { 
    return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null 
} 

console.log(getURLParameter('type')); 
+0

那到底是什麼。 .. –

相關問題