Facebook应用程序结果因本地和Heroku而异

时间:2013-01-14 06:55:21

标签: php facebook facebook-graph-api heroku facebook-php-sdk

在我的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,这会在以后引发异常。

1 个答案:

答案 0 :(得分:1)

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

我有时会遇到相同的行为,问题始终是,会话未正确建立。不幸的是,我不太确定,原因是什么。