2011-11-29 204 views
1

我想弄清楚如何獲得用戶訪問Facebook頁面的當前選項卡的標籤ID。獲取Facebook頁面標籤當前標籤的標識?

我已經做了一個在Facebook頁面上安裝的應用程序,我需要爲每個實例保存設置。我發現你可以在安裝該應用程序的頁面上獲得一組標籤,但我無法弄清楚如何獲取你正在使用的實際標籤的標籤ID。

關鍵是管理員能夠使用單個後端爲其添加應用程序的每個選項卡保存設置。我不確定是否可以在同一頁面上有一個應用程序的多個實例,但如果不是,我們會在iframe中擁有2-3個重複的應用程序,並且具有相同的後端。因此,我需要能夠將應用安裝標識爲唯一 - 我可以找出的最佳方式是使用應用的頁面標識和標識ID。

我該怎麼做?

更新:發現在一個頁面上每個應用只能有一個實例。

下面我使用此溶液去(以「/翼片/」得到的標籤信息):

try { 
    $tab = $facebook->api('/'.$fb_page_id.'/tabs/'.$fb_app_id); 
    $fb_tab_link = $tab['data'][0]['link']; 
} catch (FacebookApiException $e) { 
    echo '<!-- '.htmlspecialchars(print_r($e, true)).' -->'; 
} 

在上面的代碼,$fb_tab_link$fb_page_id$fb_app_id的組合可用於作爲唯一標識符。我決定使用連接$fb_page_id . '-' . $fb_app_id作爲實例ID。

+2

我不知道你的意思;您的應用在signed_request中發送了一個'page'參數,告訴您該應用安裝在哪個頁面上,因此您可以使用該參數來確定要顯示的內容 - 您是否可以使用該參數來確定該應用安裝在哪個頁面上? – Igy

+0

是的,我使用PAGE_ID/tabs/APP_ID api調用結束了一個唯一標識符,它也返回到當前標籤的鏈接。 – Calle

回答

2

經過一番研究,我發現通過API獲取標籤信息的調用。

try { 
    $tab = $facebook->api('/'.$fb_page_id.'/tabs/'.$fb_app_id); 
    $fb_tab_link = $tab['data'][0]['link']; 
} catch (FacebookApiException $e) { 
    echo '<!-- '.htmlspecialchars(print_r($e, true)).' -->'; 
} 

顯然,標籤ID是頁ID和App ID,這意味着你不能在網頁上安裝相同應用到多個標籤的組合。

我希望這對於需要爲Facebook頁面上的選項卡找到唯一ID的人有所幫助。

+0

你怎麼能得到$ fb_page_id,我試過它的第一次加載的Facebook頁面,但當你在你的頁面選項卡應用程序重定向,然後我們沒有得到signed_request參數,所以我們如何能夠管理這一點。 – Priyank

0

好的Calle感謝您的確認! 我也想弄明白這一點......這是有道理的......這就是爲什麼當你爲一個頁面編程創建一個標籤時,唯一的參數是app_id & access_token。 如果您嘗試在同一頁面上創建兩次應用程序選項卡,您將獲得「真實」,在我看來,這意味着您會覆蓋您創建的最後一個選項卡。

1

在Facebook的API中,當你想改變標籤名稱時,你需要傳遞標籤ID。看下面的例子。

使用Javascript SDK更改標籤名稱。

您的應用程序tab_id將爲app_ [AppId]。

FB.api([PageId]/tabs/[tab_id]', 'post', 
{access_token: [page access token], custom_name:[custom tab name]}, 
function(response){ 
if(respose == true) 
console.info("Successfully done"); 
} 
); 
+0

這是脫離主題 - 問題不在於更改選項卡的名稱,而是爲選項卡中每個已安裝的應用程序實例檢索(不可更改的)ID。 – Calle

+0

Right Calle,其實我已經發布這個,因爲它使用標籤ID。我也在改變我的文章。 – sushilprj