必须使用活动访问令牌来查询有关当前用户的信息

时间:2014-11-03 07:47:08

标签: javascript facebook facebook-graph-api

我试图将我的Facebook Feed输出到div元素。

使用此代码:

<script>
      window.fbAsyncInit = function() {
        FB.init({
          appId      : 'APP ID HERE',
          xfbml      : true,
          version    : 'v2.1'
        });

        FB.getLoginStatus(function(response) {
          if (response.status === 'connected') {
            console.log('Logged in.');
          }
          else {
            console.log('initiate FB login...');
            FB.login();
          }
        });


        FB.api('/me/feed',function(response){
            var idDiv=document.getElementById('result');
            idDiv.textContent=JSON.stringify(response);
        }); 


      };

      (function(d, s, id){
         var js, fjs = d.getElementsByTagName(s)[0];
         if (d.getElementById(id)) {return;}
         js = d.createElement(s); js.id = id;
         js.src = "//connect.facebook.net/en_US/sdk.js";
         console.log(js.length);
         fjs.parentNode.insertBefore(js, fjs);
       }(document, 'script', 'facebook-jssdk'));


    </script>
<div id='result'></div>

我得到了#34;登录&#34;显示在控制台上,因此我知道FB.getLoginStatus()已返回connected

div元素将填充以下错误:

{"error":{"message":"An active access token must be used to query information
 about the current user.","type":"OAuthException","code":2500}}

如果FB.getLoginStatus()返回connected,那么是否应该有一个有效的访问令牌?

1 个答案:

答案 0 :(得分:12)

在发送“我/ Feed”请求时,您可能没有访问令牌。

getLoginStatus不仅会检查用户是否获得授权,还会刷新用户会话。这就是为什么在“连接”之后进行api调用很重要。

尝试将调用FB.api放入getLoginStatus。

此问题类似于您遇到的问题:Facebook javascript sdk An active access token must be used to query information about the current user