$ facebook-> getSignedRequest();在iframe中返回正确的值,而在我的服务器端返回null

时间:2012-03-06 09:24:41

标签: api facebook-like

我正在为我的网站建立一个扇形门,以赠送一些优惠券。 这是我的代码:

<?php
require_once 'facebook.php';

$app_id = "xxxxxxxxxxxxxxx";
$app_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));

print_r($_REQUEST);

$signed_request = $facebook->getSignedRequest();
echo "<pre>";
print_r($facebook->getSignedRequest());
echo "</pre>";

$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
$like_status = $signed_request["page"]["liked"];

print_r($facebook);

?>

我发现$ facebook-&gt; getSignedRequest()的返回值;当我通过apps.facebook.com/xxxxxxxxxxxxxxxxxxxxxx/访问我的应用程序时以及当我访问www.coupon.mysite.com/facebook/index.php

时有所不同

通过apps.facebook.com/xxxxxxxxxxxxxxxxxxxxxx/: Facebook对象([appId:protected] =&gt; 15255288xxxxxxxx [appSecret:protected] =&gt; XXXXXXXXXXXXXXXXXXXX [user:protected] =&gt; [signedRequest:protected] =&gt;数组([algorithm] =&gt; HMAC-SHA256 [issued_at] ] =&gt; xxxxxxxxxxxxx [user] =&gt;数组([country] =&gt; hk [locale] =&gt; en_US [age] =&gt;数组([min] =&gt; 21)))[状态:受保护] =&gt; [accessToken:protected] =&gt; [fileUploadSupport:protected] =&gt;)

通过www.coupon.mysite.com/facebook/index.php: Facebook对象([appId:protected] =&gt; xxxxxxxxxxxxxxxxxxx [appSecret:protected] =&gt; xxxxxxxxxxxxxxxxxx [user:protected] =&gt; [signedRequest:protected] =&gt; [state:protected] =&gt; [accessToken:protected] =&gt; [fileUploadSupport:protected] =&gt;)

因为$ facebook-&gt; getSignedRequest();所以粉丝门不会工作总是在我的服务器端返回null。我已经做了几天寻找这个问题但仍然不明白是什么问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

^ ...继续评论:

首先,如果你这样做,你的用户会讨厌你;其次,该插件有点骗局 - 如果用户喜欢某个页面,它只会使用cookie来存储 - 但是如果你删除了你的cookie,你就会被锁定在内容之外,因为你无法喜欢再次页面。此外,没有Javascript,它将无法运作。

当用户点击“赞”按钮时,所有插件都会挂钩“喜欢”操作

FB.Event.subscribe('edge.create', function(href, response){});

facebook graph api determine if user likes url