Una de las cuestiones más importantes al iniciar el cuadro de diálogo de inicio de sesión es elegir los datos a los que debe tener acceso la aplicación. En todos los ejemplos anteriores se ha utilizado el parámetro scope
para solicitar el acceso a los datos de una persona. Es lo que se conoce como permisos.
Puedes encontrar información más detallada en la guía de permisos. Además, cuando trabajes con los permisos y el cuadro de diálogo de inicio de sesión, ten en cuenta lo siguiente:
email
deben someterse al proceso de revisión de Facebook antes de ponerse a disposición del público general. Tienes más información en la documentación sobre revisión del inicio de sesión y las normas generales sobre revisión.Una de las prácticas recomendadas del inicio de sesión con Facebook es no solicitar al mismo tiempo permisos de lectura y de publicación. Para cumplir con esta práctica, tu aplicación puede solicitar permisos adicionales más tarde, después de que las personas hayan iniciado sesión. Lo único que tienes que hacer es iniciar el cuadro de diálogo de inicio de sesión con el nuevo permiso que quieres solicitar.
Por ejemplo, supongamos que tienes un botón "Iniciar sesión" con los siguientes permisos:
<fb:login-button scope="public_profile" onlogin="checkLoginState();"> </fb:login-button>
Si revisas en /me/permissions
los permisos concedidos después de que la persona acepte, encontrarás esto:
{"data": [ { "permission":"public_profile", "status":"granted" } ] }
Si quieres añadir el permiso email
más adelante, puedes volver a iniciar el cuadro de diálogo con la función FB.login()
como se indica a continuación:
FB.login(function(response) { console.log(response); }, {scope: 'email'});
(La llamada a esta función debe realizarse desde el gestor de eventos de un botón; en caso contrario, es probable que el bloqueo de ventanas emergentes del navegador la bloquee).
Observa que únicamente solicita el nuevo permiso. Si aceptas el nuevo permiso y revisas /me/permissions
, verás lo siguiente:
{"data": [ { "permission":"public_profile", "status":"granted" }, { "permission":"email", "status":"granted" } ] }
Observa que el nuevo permiso email
se ha añadido a la lista de permisos permitidos.
El inicio de sesión con Facebook permite a las personas rechazar la asignación de determinados permisos a la aplicación. Si alguien desmarca user_likes
(Me gusta), al revisar /me/permissions
para determinar qué permisos se han concedido, el resultado será el siguiente:
{ "data": [ { "permission":"public_profile", "status":"granted" }, { "permission":"user_likes", "status":"declined" } ] }
Ten en cuenta que user_likes
se ha rechazado, no concedido.
Se puede volver a solicitar una vez a una persona que conceda a la aplicación permisos que ya rechazó. Deberías mostrar una pantalla informativa que explique por qué piensas que debería reconsiderarlo y, después, solicitar el permiso de nuevo. Sin embargo, si utilizas el método descrito en la sección anterior, el cuadro de diálogo de inicio de sesión no solicitará ese permiso.
El motivo es que, una vez que se rechaza un permiso, el cuadro de diálogo de inicio de sesión no vuelve a solicitarlo, salvo que le indiques expresamente que solicite de nuevo un permiso rechazado.
Esto se hace añadiendo la marca auth_type: rerequest
a la llamada a FB.login()
:
FB.login( function(response) { console.log(response); }, { scope: 'user_likes', auth_type: 'rerequest' } );
Al hacerlo, el cuadro de diálogo de inicio de sesión volverá a solicitar el permiso rechazado. El cuadro de diálogo tendrá un aspecto muy similar al de la sección sobre la solicitud reiterada de permisos, aunque te permitirá solicitar de nuevo un permiso rechazado.