Facebook的PHP SDK仅向某些用户提供OAuth错误
问题描述:
我已经设置了Facebook Connect,以便用户只需点击一下即可注册我的网站,并且它可以为大多数用户完美地工作,但我已经收到了一些电子邮件,来自用户的邮件会出现以下错误:Facebook的PHP SDK仅向某些用户提供OAuth错误
PHP Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user.\n thrown in /home/example/public_html/facebook.php on line 453
我无法复制此错误,因此我很难弄清楚是什么导致了这种情况。
我的Facebook连接按钮代码:
<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...
答
缩小他们正在使用将有助于调试这是什么浏览器。
如果没有这些,并根据您的代码,我可以想到会导致此问题的一件事; Javascript SDK无法通过登录按钮设置cookie。
这可以在某些浏览器根据框架发生等
处理这个问题,你可以检测是否facebook->的getSession()为空,然后重定向到$ facebook-> getLoginUrl()(其无论如何,这是一个好主意)。