El método FB.api('/me') de Facebook JS SDK no devuelve los campos que espero en Graph API v2.4+
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>
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);
});
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
Tenga en cuenta que el correo electrónico no siempre se devuelve mediante una llamada a la me
API con el email
campo as, incluso si email
se 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