我有一个Facebook页面,我添加了一个Facebook(iFrame)标签。使用Facebook PHP SDK,我正在检索SignedRequest信息。我正在使用此信息来检查用户是否喜欢Facebook页面。
在主页面上这很好用,我在SignedRequest信息中检索'page'数组,但是当我点击一个子页面(在同一个子域上使用直接URL)时,我再也无法访问这些信息了。 / p>
如何在iFrame标签页的子页面上检索此信息?
答案 0 :(得分:1)
因为看起来您只在第一次加载选项卡时才会收到签名请求。
最佳解决方案是将liked
的状态保存到会话中,并在其他子页面中使用它。
答案 1 :(得分:1)
当facebook加载到您网站的内容时(基于您在应用配置中提供的网址),您只会获得signed_request对象。现在,您在iframe中的任何链接或重定向都是您的追踪责任。你可以通过各种方式做到这一点。 1)在您的服务器上运行会话。 2)放下一块饼干并注意它。 3)在查询字符串上添加一些东西(但这是可以破解的)。
答案 2 :(得分:0)
嘿伙计们,我刚刚找到了一个解决方案,经过几天与这个问题的斗争,完美无缺,所以我决定分享它。
这是DMCS提出的解决方案的一部分 - 会话变量。
首先,您必须将所有已签名的请求信息存储到e会话变量中,如下所示:
session_start():
$signedRequest = $facebook->getSignedRequest();
if(isset($signedRequest)) $_SESSION['signedRequest'] = $signedRequest;
else $signedRequest = $_SESSION['signedRequest'];
然后您可以访问稍后阶段的所有信息(例如,Tab子页面)。只需执行print_r($ signedRequest)来检查如何访问所需的信息。例如,检查用户是否喜欢该页面:
if (!$_SESSION['signedRequest']['page']['liked']) {
//Content for users that haven't liked the page
}
这里重要的是将整个$ signedRequest存储在会话变量中。我首先尝试在会话变量中存储我需要的信息,但这不起作用。我不知道为什么。
希望它对某人有帮助。