【发布时间】:2012-02-08 08:22:12
【问题描述】:
我创建了一个页面标签 Facebook 应用程序,我想根据用户是否是粉丝来显示不同的内容。 (也称为粉丝门、登陆页或展示页)
为此,我使用的是 PHP SDK,具体代码如下:
<?php
require 'src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret' => 'APP_SECRET',
'cookie' => true,
));
?>
在内容中:
<?php
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["page"]["liked"])) {?>
Thank you for liking our Page!
<?php } else { ?>
You haven't liked our page yet..
<?php };
// Debugging Code
echo "REQUEST:<br>";
print_r($_REQUEST);
echo "<br>GET:<br>";
print_r($_GET);
echo "<br>POST:<br>";
print_r($_POST);
?>
当我使用我的 Facebook 用户登录并在我自己的主页上使用它时,此功能有效。 这意味着 $_POST 和 $_REQUEST 中都存在 signed_request。
但是,当我与另一个用户一起测试时,这些变量中没有 signed_request 值..
注意事项: - 我已经在应用程序配置中查看了我的 URL 设置(300 重定向等),但这看起来不错,就像我对我的用户所说的那样,它正在工作.. - signed_request 不只是空的,它甚至不存在。
有人有类似的问题吗?
如果可以的话,我不介意使用 Javascript SDK 而不是 PHP,但我对 Javascript 不是很有经验。
编辑:
我发现您总是必须有一个非安全 (http) 和一个安全 (https) URL。 即使您输入安全 URL 作为标准 URL,facebook 也会使用 http 与其联系,然后会被重定向(取决于服务器配置)到 https,这会使您丢失您的 signed_request。
【问题讨论】: