Метод Facebook JS SDK FB.api ('/ me') не возвращает поля, которые я ожидаю в Graph API v2.4 +

javascript facebook

38763 просмотра

4 ответа

Я пытаюсь получить основную информацию с помощью API Facebook, но пока я получаю только имя пользователя и идентификатор. Как в{ name: "Juan Fuentes", id: "123456" }

Мне нужно получить более подробную информацию, такую ​​как электронная почта, имя, фамилия и день рождения

Это мой код JS

function facebookLogin() {
  FB.login(function(response) {
    var token = response.authResponse.accessToken;
    var uid = response.authResponse.userID;
    if (response.authResponse) {
      FB.api('/me', 'get', { access_token: token }, function(response) {
        console.log(response);
      });

      FB.api('/'+uid, 'get', { access_token: token }, function(response) {
        console.log(response);
      });
    }
  },
  { scope: 'public_profile' }
  );
}

И это кнопка, которая активирует его

<a id="fb-login" href="#" onclick="facebookLogin()"></a>
Автор: Juan Fuentes Источник Размещён: 12.11.2019 09:14

Ответы (4)


55 плюса

Решение

Вам необходимо вручную указать каждое поле, начиная с Graph API v2.4:

Декларативные поля
Чтобы попытаться улучшить производительность в мобильных сетях, Nodes and Edges в v2.4 требует, чтобы вы явно запрашивали поля, которые вам нужны для ваших запросов GET. Например, GET /v2.4/me/feed больше не включает лайки и комментарии по умолчанию, но GET /v2.4/me/feed?fields=comments,likes вернет данные. Для более подробной информации смотрите документацию о том, как запросить определенные поля.

Например

FB.api('/me', 'get', { access_token: token, fields: 'id,name,gender' }, function(response) {
    console.log(response);
});
Автор: Tobi Размещён: 15.09.2015 11:56

4 плюса

Также возможно использовать этот синтаксис для данных из области public_profile (протестировано в Graph API v2.9):

FB.api('/me?fields=birthday,link,gender,age_range', function(response) {
   console.log(response);
});

Вы можете проверить возможные значения онлайн в Graph API Explorer , просто нажав кнопку «Получить токен»:

https://developers.facebook.com/tools/explorer/?method=GET&path=me%3Ffields%3Dbirthday%2Clink%2Cgender%2Cage_range&version=v2.9

Автор: NXT Размещён: 16.06.2017 11:51

0 плюса

Вот полный сценарий:

jQuery(document).ready(function () {
    openLoginPopup();
})
function openLoginPopup() {
    FB.getLoginStatus(function (response) {
        if (response.status == 'connected') {
            getCurrentUserInfo(response);
        } else {
            FB.login(function (response) {
                if (response.authResponse) {
                    getCurrentUserInfo(response);
                } else {
                    console.log('Auth cancelled.');
                }
            }, {scope: 'email'});
        }
    });

}

function getCurrentUserInfo() {
    FB.api('/me?fields=id,email,first_name,last_name,name', function (userInfo) {
        console.log(userInfo.name + ': ' + userInfo.email);
    });
}

window.fbAsyncInit = function () {
    FB.init({
//        appId: 'xxxxxxxxxxxxxxxxxxxxx', //livemode
        appId: 'xxxxxxxxxxxx', //testmode
        cookie: true, // Enable cookies to allow the server to access the session.
        xfbml: true, // Parse social plugins on this webpage.
        version: 'v4.0'           // Use this Graph API version for this call.
    });
};


(function (d, s, id) {                      // Load the SDK asynchronously
    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'));

Благодарю.

Автор: Mukesh Размещён: 18.09.2019 03:20

0 плюса

Обратите внимание, что электронная почта не всегда возвращается при вызове meAPI с emailполем as, даже если область emailбыла запрошена и предоставлена, например, если пользователь зарегистрировался с номером телефона:

https://developers.facebook.com/docs/facebook-login/permissions#reference-email

Автор: stephan f Размещён: 08.10.2019 09:16
Вопросы из категории :
32x32