4

在我的 facebook 应用程序中,有两个文件 index.php 和 write.php 使用了这个基本代码:

require_once('AppInfo.php');
if (substr(AppInfo::getUrl(), 0, 8) != 'https://' && $_SERVER['REMOTE_ADDR'] !=    '127.0.0.1') {
    header('Location: https://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    exit();
}
require_once('utils.php');
require_once('sdk/src/facebook.php');

$facebook = new Facebook(array(
    'appId'  => AppInfo::appID(),
    'secret' => AppInfo::appSecret(),
));
$user_id = $facebook->getUser();

加载 index.php 后,将向 write.php 发送一个 ajax 请求,后者将查询发送到 Facebook 并将结果写入文本文件。write.php 使用相同的代码来初始化 Facebook 对象。

这在本地测试时工作正常,但在上传到 Heroku 后会给出任意结果。$user_id 为 null 并且代码无法超出 if($user_id) 或 $user_id 的值为 0,这会在以后引发异常。

4

1 回答 1

1

Facebook SDK 将登录数据存储在会话中。由于您的 AJAX 请求write.php不会发送完整的 facebook POST 数据,因此 facebook 类假定没有签名请求,因此没有数据。

我有时遇到同样的行为,问题总是,会话没有正确建立。不幸的是,我不太确定,确切的原因是什么。

于 2013-01-23T16:26:30.917 回答