有关Facebook标签内子页面的SignedRequest信息

时间:2012-01-11 11:18:28

标签: php iframe facebook-php-sdk

我有一个Facebook页面,我添加了一个Facebook(iFrame)标签。使用Facebook PHP SDK,我正在检索SignedRequest信息。我正在使用此信息来检查用户是否喜欢Facebook页面。

在主页面上这很好用,我在SignedRequest信息中检索'page'数组,但是当我点击一个子页面(在同一个子域上使用直接URL)时,我再也无法访问这些信息了。 / p>

如何在iFrame标签页的子页面上检索此信息?

3 个答案:

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

希望它对某人有帮助。