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

An active access token must be used to query information about the current user

本文关键字:用户 信息 查询 活动 访问令牌      更新时间:2023-09-26

我正试图将我的Facebook提要输出到一个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>

控制台上显示"已登录",因此我知道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,是否应该有活动的访问令牌?

在发送'me/feed'请求时,您可能没有访问令牌。

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

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

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