【问题标题】:Get Facebook Page Tab ID of current Tab?获取当前选项卡的 Facebook 页面选项卡 ID?
【发布时间】:2012-01-29 00:45:17
【问题描述】:

我试图弄清楚如何获取用户正在访问的 Facebook 页面的当前选项卡的选项卡 ID。

我已经制作了一个用于在 Facebook 页面上安装的应用程序,我需要为每个实例保存设置。我发现您可以为安装应用程序的页面获取一系列标签,但我不知道如何获取您所在的实际标签的标签 ID。

关键是管理员能够使用单个后端保存他们已将应用添加到的每个选项卡的设置。我不确定您是否可以在同一页面上拥有一个应用程序的多个实例,但如果不能,我们将在 iframe 中有 2-3 个具有相同后端的重复应用程序。因此,我需要能够将应用安装识别为唯一的 - 我能找出的最佳方法是使用应用的页面 ID 和标签 ID。

我该怎么做?

更新:发现页面上的每个应用只能有一个实例。

有了这个,我继续使用这个解决方案(使用'/tabs/'来获取标签信息):

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。

【问题讨论】:

  • 我不确定你的意思;您的应用程序在signed_request 中发送一个“页面”参数,告诉您应用程序安装在哪个页面上,因此您可以使用它来确定要显示的内容 - 您不能只使用它来确定应用程序安装在哪个页面上?
  • 是的,我最终使用 PAGE_ID/tabs/APP_ID api 调用作为唯一标识符,它还返回到当前选项卡的链接。

标签: facebook facebook-graph-api


【解决方案1】:

经过一番研究,我发现了通过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)).' -->';
}

显然,tab ID 是 Page ID 和 App ID 的组合,这意味着您不能将同一个应用程序安装到一个页面上的多个选项卡上。

我希望这对需要在 Facebook 页面上查找标签的唯一 ID 的人有所帮助。

【讨论】:

  • 你怎么能得到 $fb_page_id,我试过它在第一次加载 facebook 页面时工作,但是当你在你的页面标签应用程序中重定向时,我们没有得到 signed_request 参数,所以我们如何管理这个.
【解决方案2】:

在facebook api中,当你想改变tabname时,你需要传递tab 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");
}
);

【讨论】:

  • 这是题外话 - 问题不是更改选项卡的名称,而是检索选项卡中每个已安装应用实例的(不可更改的)ID。
  • Right Calle,实际上我已经发布了这个,因为它使用了标签 ID。我也在更改我的帖子的文字。
【解决方案3】:

好的 Calle 感谢您的确认! 我也试图弄清楚这一点……这很有意义……这就是为什么当您以编程方式为页面创建选项卡时,唯一的参数是 app_id 和 access_token。 如果您尝试在同一页面上创建应用标签两次,您将得到“true”,我认为这意味着您覆盖了您创建的最后一个标签。

【讨论】:

    【解决方案4】:

    Facebook 将 signed_request 参数添加到您应用的请求 URL。您可以解码此参数以获取页面 ID 以及其他有用信息:

    http://developers.facebook.com/docs/authentication/signed_request/

    【讨论】:

    • 是的,PHP 的 Facebook API 处理了 signed_request,所以它在 $tab = $facebook-&gt;api('/'.$fb_page_id.'/tabs/'.$fb_app_id); 之前调用
    猜你喜欢
    • 1970-01-01
    • 2013-04-24
    • 2023-03-22
    • 2010-12-24
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多