Facebook标签中的子页面的签名请求信息

问题描述:

我已经添加了Facebook(iFrame)选项卡的Facebook页面。使用Facebook PHP SDK,我正在检索SignedRequest信息。我正在使用这些信息来检查用户是否喜欢Facebook页面。Facebook标签中的子页面的签名请求信息

在主页上,这工作正常,我检索SignedRequest信息中的'页面'数组,但是当我点击一个子页面(在同一子域上使用直接url)时,我无法再访问这些信息。

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

看起来您只有在第一次加载选项卡时才会收到签名的请求。 最好的解决方案是将liked的状态保存到会话中,并在其他子页面中使用。

当facebook加载到您网站的内容中时(根据您在应用配置中提供的网址),您只能获得signed_request对象。现在,该iframe中的任何链接或重定向都是您追踪的责任。你可以通过多种方式做到这一点。 1)在您的服务器上运行会话。 2)丢弃一块饼干并观察。 3)把一些东西放在查询字符串中(但这是可以破解的)。

嘿,我刚刚发现了一个解决方案,在与这个问题斗争了几天后完美地工作,所以我决定分享它。

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

首先,你必须所有签订的请求信息存储到电子书会话变量是这样的:

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在会话变量。我首先尝试在会话变量中存储我需要的信息,但这不起作用。我不知道为什么。

希望它有助于某人。