El método FB.api('/me') de Facebook JS SDK no devuelve los campos que espero en Graph API v2.4+

Resuelto Juan Fuentes asked hace 9 años • 4 respuestas

Estoy intentando obtener información básica utilizando la API de Facebook, pero hasta ahora solo obtengo el nombre y la identificación del usuario. Como en{ name: "Juan Fuentes", id: "123456" }

Necesito obtener más información, como correo electrónico, nombre, apellido y fecha de nacimiento.

Este es mi código 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' }
  );
}

Y este es el botón que lo activa.

<a id="fb-login" href="#" onclick="facebookLogin()"></a>
Juan Fuentes avatar Sep 15 '15 18:09 Juan Fuentes
Aceptado

Debe especificar manualmente cada campo desde Graph API v2.4:

  • https://developers.facebook.com/docs/apps/changelog#v2_4
  • https://developers.facebook.com/docs/javascript/reference/FB.api

Campos declarativos
Para intentar mejorar el rendimiento en redes móviles, Nodes and Edges en v2.4 requiere que solicite explícitamente los campos que necesita para sus solicitudes GET. Por ejemplo, GET /v2.4/me/feed ya no incluye Me gusta y comentarios de forma predeterminada, pero GET /v2.4/me/feed?fields=comments,likes devolverá los datos. Para obtener más detalles, consulte los documentos sobre cómo solicitar campos específicos.

P.ej

FB.api('/me', 'get', { access_token: token, fields: 'id,name,gender' }, function(response) {
    console.log(response);
});
Tobi avatar Sep 15 '2015 11:09 Tobi

También es posible utilizar esta sintaxis para datos del alcance public_profile (probado en Graph API v2.9):

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

Puede probar los valores posibles en línea en Graph API Explorer , simplemente haga clic en el botón "Obtener token":

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

NXT avatar Jun 16 '2017 11:06 NXT

Tenga en cuenta que el correo electrónico no siempre se devuelve mediante una llamada a la meAPI con el emailcampo as, incluso si emailse solicitó y se concedió el alcance, si, por ejemplo, el usuario se registró con un número de teléfono:

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

stephan f avatar Oct 08 '2019 09:10 stephan f