Для этого вызова требуется токен доступа к странице - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь войти в систему через Facebook, что сделано. Мне нужно получить информацию о пользователе, такую ​​как имя, адрес электронной почты, родной город, местоположение, пол, profile_pic. Но я могу получить только имя пользователя, вошедшего в систему. Я также добавил параметр поля в API. Вы можете видеть это в коде ниже.

<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'));

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Некоторые поля могут быть указаны неправильно, поэтому Facebook API выдает такую ​​ошибку, даже когда все остальное кажется нормальным.Например, поле profile_pic может вызвать такую ​​ошибку, которая должна выглядеть примерно так: picture.type(large).См. Также: FacebookGraphAPIError: (# 210) Для этого вызова требуется токен доступа к странице

0 голосов
/ 10 сентября 2018

Убедитесь, что во всплывающем окне при входе в систему вас спрашивают о разрешении электронной почты. Кроме того, вам нужно запросить дополнительные разрешения с параметром области, а не только по электронной почте. Например, 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/

...