Facebook选项卡中子页面上的SignedRequest信息


SignedRequest information on subpages within Facebook tab

我有一个Facebook页面,在那里我添加了一个Facebook(iFrame)选项卡。使用Facebook PHP SDK,我正在检索SignedRequest信息。我使用这些信息来检查用户是否喜欢Facebook页面。

在主页上,这很好,我在SignedRequest信息中检索"page"数组,但当我单击子页面(在同一子域上使用直接url)时,我无法再访问此信息。

如何在iFrame选项卡中的子页面上检索此信息?

因为似乎只有在第一次加载选项卡时才能获得签名的请求。最好的解决方案是将liked的状态保存到会话中,并在其他子页面中使用。

只有当facebook加载到您网站的内容时(基于您在应用程序配置中提供的url),您才能获得signed_request对象。iframe中的任何链接或重定向现在都由您负责跟踪。你可以用多种方式来做。1) 在服务器上运行会话。2) 扔一块饼干,小心。3) 在querystring中添加一些内容(但这是可破解的)。

嘿,伙计们,经过几天的努力,我刚刚找到了一个完美的解决方案,所以我决定分享它。

这是DMCS提出的解决方案的一部分-会话变量。

首先,您必须将所有已签名的请求信息存储到e会话变量中,如下所示:

session_start():
$signedRequest = $facebook->getSignedRequest();
if(isset($signedRequest)) $_SESSION['signedRequest'] = $signedRequest;
 else $signedRequest = $_SESSION['signedRequest'];

然后,您可以访问稍后阶段的所有信息(例如,选项卡子页面)。只需执行print_r($signedRequest)检查如何访问所需的信息。例如,要检查用户是否喜欢该页面,只需执行以下操作:

if (!$_SESSION['signedRequest']['page']['liked']) { 
//Content for users that haven't liked the page
} 

这里重要的是将整个$signedRequest存储在会话变量中。我首先尝试在会话变量中只存储我需要的信息,但这不起作用。我不知道为什么。

希望它能帮助到别人。