我设置了Facebook Connect,这样用户只需点击一下即可注册我的网站,并且对大多数用户来说都能完美运行,但我收到了一些来自用户的电子邮件,收到以下错误:< / p>
PHP致命错误:未捕获 OAuthException:活动访问令牌 必须用于查询信息 关于当前用户。\ n抛出 /home/example/public_html/facebook.php 在第453行
我无法复制此错误,因此我很难弄清楚造成这种情况的原因。
我的Facebook Connect按钮代码:
<fb:login-button size="large" length="long" v="2" perms="email,user_birthday" onlogin="fb_login()"></fb:login-button>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({appId: '.....', status: true, cookie: true, xfbml: true});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//static.ak.fbcdn.net/connect/en_US/core.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
function fb_login() {
FB.getLoginStatus(function(response) {
if (response.session) {
window.location = 'http://example.com/register_fb.php';
}
});
}
</script>
我的PHP代码:
require './facebook.php';
$facebook = new Facebook(array(
'appId' => '....',
'secret' => '....',
'cookie' => true,
));
$session = $facebook->getSession();
$user = $facebook->api('/me');
//// register the user or log them in...
答案 0 :(得分:1)
缩小他们使用的浏览器将有助于调试它。
如果没有这个并且基于你的代码,我可以想到一个会导致这个问题的事情; Javascript SDK无法通过登录按钮设置cookie。
某些浏览器可能会出现这种情况,具体取决于框架等。
处理此问题,您可以检测facebook-&gt; getSession()是否为null,然后重定向到$ facebook-&gt; getLoginUrl()(无论如何这都是个好主意。)