Facebook的PHP SDK仅向某些用户提供OAuth错误

时间:2011-01-20 20:18:41

标签: php facebook facebook-graph-api

我设置了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...

1 个答案:

答案 0 :(得分:1)

缩小他们使用的浏览器将有助于调试它。

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

某些浏览器可能会出现这种情况,具体取决于框架等。

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