Administración de permisos para Android

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

  • Campos predeterminados del perfil público: permiten acceder a información básica del perfil.

  • Permisos de lectura: el resto de información que alguien añade a su perfil de Facebook se asegura mediante otros permisos de lectura.

  • Permisos de escritura: las aplicaciones requieren un permiso de publicación independiente para publicar contenido en nombre de otra persona.

A continuación, te explicamos las formas de gestionar los permisos en una aplicación:

  • Cuando la aplicación envía solicitudes de Facebook a un usuario, debe comprobar si dispone de los permisos para ello y solicitarlos, de ser necesario.

  • Para resolver los errores por falta de permisos desde Facebook, la aplicación debe solicitarlos y volver a intentarlo.

  • Las personas que utilizan la aplicación pueden revocar los permisos desde Facebook, aunque también tienes la posibilidad de hacerlo desde la aplicación.

  • También puedes permitir que las personas retiren de la aplicación privilegios de inicio de sesión básicos, implementando para ello un mecanismo que revoque el inicio de sesión por completo.

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

Las personas se muestran reacias a otorgar permisos de publicación, por lo que solo debes solicitarlos cuando una persona esté preparada para publicar algo desde tu aplicación, no al iniciar sesión por primera vez.

Obtención de permisos adicionales

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

En este caso, user_status. Puedes pasar estos permisos al botón LoginButton o a una IU personalizada para el inicio de sesión y los permisos.

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

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

return view;
...

Obtención de permisos de lectura

LoginManager es una instancia única que funciona con el método currentAccessToken del identificador de acceso. Este método se establece cuando se inicia sesión correctamente. Para solicitar permisos adicionales, solo tienes que llamar a los métodos logInWithPermissionName.

Los métodos logInWithPermissionName siempre abren una IU y solicitan permisos adicionales a alguien si es necesario. Para 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 otros permisos además de los que ya se han concedido a la aplicación. Puedes utilizar esta solicitud tras el inicio de sesión inicial.

Puedes solicitar muchos de los permisos de lectura que aparecen en la referencia de permisos.

Obtención de permisos de publicación

Durante el inicio de sesión, puedes solicitar cualquier número de permisos de lectura o publicación. Si se solicitan más de cuatro permisos, el número de inicios de sesión completados se reducirá de forma significativa.

A partir del 24 de abril de 2018, el permiso pubish_actions está eliminado. Consulta el registro de cambios de última hora para obtener más detalles. Para proporcionar a los usuarios de la aplicación una forma de compartir contenido en Facebook, te recomendamos que utilices nuestros productos de uso compartido como alternativa.

Si solicitas permisos de publicación con publish_actions durante el inicio de sesión, se crea un segundo paso en la IU de inicio de sesión. Por tanto, reduce al mínimo la solicitud de permisos de lectura durante el inicio de sesión y solicita permisos adicionales o de publicación únicamente cuando la persona los necesite. Para optimizar las solicitudes de permisos, consulta Permisos de optimización.

Para solicitar permisos de publicación en tu aplicación, puedes utilizar el LoginManager.

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

Esta clase solicita permisos que se suman a los que la aplicación ya ha recibido durante el inicio de sesión.

Volver a solicitar permisos

Las personas solo pueden otorgar un subconjunto de permisos que has solicitado, excepto el public profile, que se otorga al iniciar sesión.

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

AccessToken.getCurrentAccessToken().getPermissions();

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

AccessToken.getCurrentAccessToken().getDeclinedPermissions();

La aplicación debe ser capaz de resolver la situación en caso de que una persona rechace concederle alguno de los permisos solicitados. Si tu aplicación necesita uno de los permisos rechazados para funcionar, puedes volver a solicitarlo utilizando el LoginManager como se ve en los ejemplos anteriores.

Revisión del inicio de sesión

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

Si la aplicación pide permisos distintos de los de los campos de perfil público predeterminados, Facebook deberá revisarla antes de su publicación. Obtén más información acerca del proceso de revisión y los requisitos para superarlo.

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