Facebook';s PHP SDK仅向某些用户提供OAuth错误

Facebook';s PHP SDK仅向某些用户提供OAuth错误,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我已经设置了Facebook Connect,这样用户只需点击一下就可以注册我的网站,而且它对大多数用户来说都是完美无瑕的,但我收到了一些用户的电子邮件,其中有以下错误: PHP致命错误:未捕获 OAutheException:活动访问令牌 必须用于查询信息 关于当前用户。\n已传入 /home/example/public_html/facebook.php 在线453 我无法复制这个错误,所以我很难找出是什么导致了这个错误 我的Facebook连接按钮代码: <fb:login-but

我已经设置了Facebook Connect,这样用户只需点击一下就可以注册我的网站,而且它对大多数用户来说都是完美无瑕的,但我收到了一些用户的电子邮件,其中有以下错误:

PHP致命错误:未捕获 OAutheException:活动访问令牌 必须用于查询信息 关于当前用户。\n已传入 /home/example/public_html/facebook.php 在线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>

缩小他们使用的浏览器的范围将有助于调试这一点

如果没有这一点,并且基于您的代码,我可以想到一件事情会导致这个问题;Javascript SDK无法通过登录按钮设置cookie

这可能发生在某些浏览器中,具体取决于帧等

处理此问题时,您可以检测facebook->getSession()是否为空,然后重定向到$facebook->getLoginUrl()(无论如何,这是个好主意)

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...