Una de las partes más importantes al activar el cuadro de diálogo de inicio de sesión es elegir a qué datos quieres que tenga acceso la aplicación. Todos estos ejemplos utilizan el parámetro scope
, que es el modo de solicitar el acceso a los datos de una persona. Reciben el nombre de permisos.
Puedes encontrar información más detallada en nuestra guía de permisos. Cuando trabajes con los permisos y el cuadro de diálogo de inicio de sesión, recuerda que:
email
antes de que estén disponibles para el público en general. Obtén más información en la documentación sobre revisión del inicio de sesión y las normas de revisión generales.Una de las prácticas recomendadas para el inicio de sesión con Facebook es no solicitar al mismo tiempo permisos de lectura y de publicación. Para seguir esta práctica, tu aplicación puede solicitar otros permisos más tarde, mucho después de que las personas hayan iniciado sesión. Para llevarlo a cabo, solo debes iniciar el cuadro de diálogo de inicio de sesión con los nuevos permisos que solicites.
Por ejemplo, supongamos que tenías un botón "Iniciar sesión" con los siguientes permisos:
<fb:login-button scope="public_profile" onlogin="checkLoginState();"> </fb:login-button>
Si revisaras en /me/permissions
los permisos concedidos después de que la persona aceptó el proceso, encontrarías esto:
{"data": [ { "permission":"public_profile", "status":"granted" } ] }
Si quisieras agregar el permiso email
más adelante, podrías volver a iniciar el cuadro de diálogo con la función FB.login()
, así:
FB.login(function(response) { console.log(response); }, {scope: 'email'});
(La llamada a esta función se debe realizar desde el administrador de eventos de un botón; en caso contrario, es probable que la función de bloqueo de ventanas emergentes del navegador la bloquee).
Observa que únicamente solicita el nuevo permiso. Si aceptas el nuevo permiso y compruebas /me/permissions
, verás esto:
{"data": [ { "permission":"public_profile", "status":"granted" }, { "permission":"email", "status":"granted" } ] }
Fíjate que el nuevo permiso email
se haya agregado a la lista de permisos concedidos.
El inicio de sesión con Facebook permite a las personas no conceder algunos permisos a la aplicación. Sin embargo, si alguien desmarca user_likes
(Me gusta) en este ejemplo y compruebas /me/permissions
para determinar qué permisos se concedieron obtendrás el siguiente resultado:
{ "data": [ { "permission":"public_profile", "status":"granted" }, { "permission":"user_likes", "status":"declined" } ] }
Ten en cuenta que user_likes
se rechazó en lugar de concederse.
Es aceptable pedir una vez a una persona que conceda a la aplicación permisos que ya rechazó. Muéstrale una pantalla informativa que explique por qué es importante que conceda el permiso y, después, vuelve a solicitarlo. Sin embargo, si utilizas el método descrito en la sección anterior, el cuadro de diálogo de inicio de sesión no pedirá ese permiso.
El motivo es que, una vez que se rechaza un permiso, el cuadro de diálogo de inicio de sesión no lo vuelve a solicitar a menos que se lo indiques explícitamente.
Esto se hace agregando 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 los permisos rechazados. Tendrá un aspecto muy similar al de la sección sobre volver a solicitar permisos, pero te permitirá solicitar de nuevo un permiso rechazado.