我正在编写一个 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 报告的错误 - 检查下面的评论。