Administrar permisos para Android

Durante el inicio de sesión básico, la app recibe acceso al perfil público y el correo electrónico de una persona. Para acceder a información adicional del perfil o publicar contenido en Facebook en nombre de una persona, debes solicitar los permisos necesarios:

  • Campos de perfil público predeterminado: se otorga acceso a la información básica del perfil.

  • Permisos de lectura: el resto de la información que un usuario agrega a su perfil de Facebook está protegida por otros permisos de lectura.

  • Permisos de escritura: las apps necesitan permisos de publicación independientes para publicar contenido en nombre de una persona.

A continuación, te explicamos las formas de administrar los permisos en tu app:

  • Cuando la app envía solicitudes de Facebook a un usuario, debe comprobar si dispone de los permisos necesarios y solicitar los que hagan falta.

  • Para resolver los errores por falta de permisos de Facebook, la app debe solicitarlos y volver a intentar la acción.

  • Las personas que usan la app pueden revocar los permisos desde Facebook, aunque también puedes implementar la posibilidad de que lo hagan desde la app.

  • También puedes permitir que se eliminen los privilegios de inicio de sesión básicos de la app. Para ello, debes implementar un mecanismo que revoque el inicio de sesión por completo.

Puedes obtener más información sobre los distintos permisos disponibles en la guía de permisos.

Las personas suelen rechazar el otorgamiento de permisos de publicación, de modo que solo debes solicitarlos si una persona quiere publicar algo desde tu app; no durante el inicio de sesión inicial.

Obtener permisos adicionales

Durante el inicio de sesión básico, la app recibe acceso al perfil público y el correo electrónico de una persona. Para acceder a información adicional del perfil o publicar contenido en Facebook en nombre de esa persona, debes solicitar los permisos necesarios.

En este ejemplo, se obtiene user_status. Podemos pasar estos permisos al botón LoginButton o a una interfaz de usuario personalizada para el inicio de sesión y la administración de permisos.

En la clase MainFragment, modifica el código de onCreateView():

...
LoginButton authButton = (LoginButton)view.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setReadPermissions(Arrays.asList("user_status"));

return view;
...

Obtener permisos de lectura

LoginManager es una instancia única y funciona con el token de acceso currentAccessToken. Una vez que se inició sesión correctamente, se configura currentAccessToken. Para solicitar permisos adicionales, simplemente llama a los métodos logInWithPermissionName.

Los métodos logInWithPermissionName siempre abren una interfaz de usuario y, si es necesario, solicitan permisos adicionales. A fin de obtener permisos adicionales de un usuario, realiza la solicitud con el SDK de Facebook para Android:

LoginManager.getInstance().logInWithReadPermissions(
    fragmentOrActivity,
    Arrays.asList("email"));

Así, podrás solicitar más permisos de los que la app ya tiene concedidos. Esta opción se puede usar tras el inicio de sesión inicial.

Puedes solicitar muchos de los permisos de lectura indicados en la sección Referencia de permisos.

Obtener permisos de publicación

Durante el inicio de sesión, puedes solicitar cualquier cantidad de permisos de lectura y publicación. Si se solicitan más de cuatro permisos, la cantidad de inicios de sesión completados se reduce de forma significativa.

El 24 de abril de 2018, se eliminó el permiso pubish_actions. Consulta el registro de cambios radicales para obtener más información. Si necesitas que los usuarios de la app compartan contenido en Facebook, te recomendamos que uses los productos con la función para compartir.

La solicitud de permisos de publicación con publish_actions durante el inicio de sesión crea un segundo paso en la interfaz de inicio de sesión. Por tanto, debes reducir al mínimo la solicitud de permisos de lectura durante el inicio de sesión y solicitar permisos adicionales o de publicación únicamente en el momento en que el usuario los necesite. Para optimizar las solicitudes de permisos, consulta Optimizar permisos.

Puedes utilizar LoginManager para solicitar permisos de publicación en tu app.

LoginManager.getInstance().logInWithPublishPermissions(
    fragmentOrActivity,
    Arrays.asList("publish_actions"));

Este método solicita permisos que se suman a los que la app recibió durante el inicio de sesión.

Volver a solicitar permisos

Las personas pueden conceder solo un subconjunto de los permisos que solicitas, con la excepción de public profile, que se concede al iniciar sesión.

Para obtener la lista de permisos asociados al token de acceso actual, realiza esta llamada:

AccessToken.getCurrentAccessToken().getPermissions();

Para obtener la lista de los permisos rechazados, realiza esta llamada:

AccessToken.getCurrentAccessToken().getDeclinedPermissions();

La app debe contemplar el caso en el que una persona rechaza conceder a la app alguno de los permisos solicitados. Si para su correcto funcionamiento la app necesita un permiso que no fue concedido, puedes volver a solicitarlo mediante LoginManager, como en los ejemplos anteriores.

Revisión del inicio de sesión

Al implementar el inicio de sesión con Facebook, la app tiene la opción de solicitar a la persona permisos para acceder a un subconjunto de sus datos.

Si la app solicita otros permisos además de los de correo electrónico y de campos de perfil público predeterminado, Facebook debe revisarla antes del lanzamiento. Obtén más información sobre el proceso de revisión y los requisitos para obtener un resultado positivo.

Guía de revisión del inicio de sesión