1

我正在编写一个 Facebook 应用程序并使用了 Facebook php SDK,因此它可以被授权服务器端。我可以看到这是有效的,因为在 Facebook 重定向回我的应用程序授权后,我的 index.php 中有以下代码...

require_once 'facebook.php';

$facebook = new Facebook(array(
    'appId' => '111111111111111',
    'secret' => '11111111111111111111111111111111',
    'cookie' => true
));
    // Get User ID
    $user = $facebook->getUser();

...并且 $user 返回不为空。到目前为止,一切都很好!

我的应用程序上有一个链接,单击时通过 ajax 加载内容。这是JS:

$.post('my_content.php', {
    action: 'render'
}, function(res){
    if (res.html.length) {              
        $('.content').html(res.html);
    }
},'json');

问题是,my_content.php 脚本似乎丢失了用户已登录并授权该应用程序的事实。

我在 my_content.php 脚本中运行以检查用户是否登录的代码与 index.php 中的代码相同

require_once 'facebook.php';

$facebook = new Facebook(array(
    'appId' => '111111111111111',
    'secret' => '11111111111111111111111111111111',
    'cookie' => true
));
    // Get User ID
    $user = $facebook->getUser();

这一次虽然$user = $facebook->getUser()返回 null。

在使用 AJAX 调用运行 PHP 脚本时,有没有办法检查用户是否已登录并获得授权?

我应该在我的 index.php 脚本的会话变量中存储一些东西吗?

编辑

经过更多阅读,我想知道是否需要使用 JavaScript SDK 检索访问令牌并将其传递给 my_content.php。有谁知道这是否是正确的方法?

编辑 2

原来给我的问题不是$user = $facebook->getUser()

就是这个

$user_profile = $facebook->api('/me');

此行失败并显示错误“OAuthException:必须使用活动访问令牌来查询有关当前用户的信息。”

奇怪的是,如果我这样做

$access_token = $facebook->getAccessToken();
$user = $facebook->getUser();

echo $access_token;
echo $user;

我确实有一个访问令牌和一个用户 ID,所以它看起来很可能是 CBroe 报告的错误 - 检查下面的评论。

4

0 回答 0