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