如何根据将选项卡添加到其页面的用户将查询字符串传递到Facebook选项卡应用程序URL

时间:2012-10-22 20:09:26

标签: facebook facebook-javascript-sdk facebook-apps

我有一个非常直接的页面选项卡应用程序,可以添加到anyones FB页面。我在我的网站上提供了一个按钮,以帮助用户将应用程序添加到他们的FB页面。

我想更新iframe页面标签网址(和安全网址)以包含查询字符串。这将允许为将应用添加到其页面的每个用户自定义iframe的内容。

基本用例是用户1单击该按钮,应用程序将添加到其页面中。 iframe的内容特定于用户1.用户2执行相同但其选项卡的内容特定于用户2.我可以处理我的网站上的查询字符串,以便它正确响应但我不知道如何让Tab url从Add App to Facebook按钮添加查询字符串参数。

我正在使用的Facebook代码的当前添加应用程序:

<div id='fb-root'></div>
<script src='http://connect.facebook.net/en_US/all.js'></script>
<p><a onclick='addToPage(); return false;'>Add to Page</a></p>
<p id='msg'></p>

<script> 
  FB.init({appId: "252314034891861", status: true, cookie: true});

   function addToPage() {

  // calling the API ...
  FB.ui(
    {
        method: 'pagetab'
    },
    function(response) {
        if (response != null && response.tabs_added != null) {

            $.each(response.tabs_added, function(pageid) {
                  alert(pageid);
            });
        }
    }
  );


  }

</script>

感谢您的帮助!

已添加更多信息

在与另一个开发者讨论之后,我想确保我很清楚。 User1是否将选项卡添加到其页面,然后无论谁查看选项卡,内容将始终是User1的上下文。如果User2将此选项卡添加到其页面,则无论谁查看该选项卡,该内容都将与User2相关联。选项卡的内容特定于将标签添加到其页面的用户。

1 个答案:

答案 0 :(得分:3)

您应该根据页面ID而不是添加它的页面管理员的用户ID来更改内容。简短版本:这是因为您无法在应用程序的负载中可靠地传递页面管理员的用户ID(或者任何其他信息,因为用户可以手动访问该选项卡)

但是,页面ID会随着signed_requestpage属性的每个请求以及其他一些参数(包括当前用户ID)(如果他们已授权您的应用)一起传递给您的应用以及他们是否喜欢该页面或是该页面的管理员(无论其授权状态如何)

应用无法多次安装到网页上,因此应用ID /网页ID对您来说将是唯一的

您可以传递给页面选项卡应用程序以自定义显示的唯一其他参数是app_data参数,该参数将在signed_request的page属性中发送,但这仅适用于链接其中包含该参数:用户直接点击页面选项卡将不会传递该参数并获得未经过自定义的内容

有关详细信息,请参阅文档入门部分中的Page Tab tutorial