【问题标题】:This call requires a Page access token此调用需要页面访问令牌
【发布时间】:2019-01-16 05:25:29
【问题描述】:

我正在尝试使用 facebook 登录,这已完成。我需要获取用户信息,例如姓名、电子邮件、家乡、位置、性别、profile_pic。但我只能获取登录用户的用户名。我还向 api 添加了 fields 参数。你可以在下面的代码中看到。

<div id="container"></div>
<script>
 var accessToken;
 window.fbAsyncInit = function() {
   FB.init({
    appId      : 'App Id',
    cookie     : true,
    xfbml      : true,
    version    : 'v3.1'
   });

   FB.AppEvents.logPageView();   

   function getuserProfile() {
    FB.api('/me?fields=id,name,email,birthday,gender,hometown,location,profile_pic', {access_token : accessToken }, function (response){
      console.log(response);
    });
 }  

FB.login(function(response) {
  if (response.status === 'connected') {
    accessToken = response.authResponse.accessToken;
    getuserProfile();
  } else {
    console.log('not connected');
  }
}, {scope: 'email'});  
};

(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 = "https://connect.facebook.net/en_US/sdk.js";
  fjs.parentNode.insertBefore(js, fjs);
 }(document, 'script', 'facebook-jssdk'));

【问题讨论】:

    标签: facebook-graph-api facebook-javascript-sdk


    【解决方案1】:

    某些字段可能指定错误,这就是为什么Facebook API 会给出这样的错误,即使其他一切看起来都很好。例如profile_pic 字段可能会导致类似picture.type(large) 的错误。另见:FacebookGraphAPIError: (#210) This call requires a Page access token

    【讨论】:

      【解决方案2】:

      确保在登录弹出窗口中询问您的电子邮件权限。此外,您需要使用范围参数请求其他权限,而不仅仅是电子邮件。例如,user_birthday 获取用户的生日。现在您只要求电子邮件权限。

      例子:

      FB.login(function(response) {
        if (response.status === 'connected') {
          accessToken = response.authResponse.accessToken;
          getuserProfile();
        } else {
          console.log('not connected');
        }
      }, {scope: 'email,user_birthday,...'});  
      };
      

      权限参考:https://developers.facebook.com/docs/facebook-login/permissions/

      【讨论】:

      • 谢谢,但我是初学者。您能否编辑我的代码以作为实际示例。
      • 正如您回答的那样,“您现在只要求电子邮件权限”。在回复中,我只得到用户名和 ID。
      • 您真的只需要为范围参数添加额外的权限,仅此而已。关于电子邮件:Facebook 不需要电子邮件,因此您可能不会为每个帐户都收到电子邮件。再次,确保您确实在登录弹出窗口中被要求提供电子邮件权限。
      • 我已经用生日权限的示例更新了您的代码。
      • 谢谢,你能告诉我有多少参数可以传递给范围,如电子邮件、user_birthday?例如,如果我想获取用户位置,那么我应该在范围内写什么。
      猜你喜欢
      • 2018-09-01
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-14
      • 2018-03-20
      • 2011-10-11
      相关资源
      最近更新 更多