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

sig*_*gil 10 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>
Run Code Online (Sandbox Code Playgroud)

我在控制台上显示"登录",所以我知道FB.getLoginStatus()已经返回了connected.

div元素将填充以下错误:

{"error":{"message":"An active access token must be used to query information
 about the current user.","type":"OAuthException","code":2500}}
Run Code Online (Sandbox Code Playgroud)

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

小智 12

在发送"我/ Feed"请求时,您可能没有访问令牌.

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

尝试在getLoginStatus中调用FB.api.

这个问题类似于你遇到的问题:Facebook javascript sdk必须使用活动访问令牌来查询有关当前用户的信息