Solicitar y revocar permisos

Cada tipo de proceso de inicio de sesión tiene su propio método para solicitar permisos, según tu plataforma y cómo elijas integrar el inicio de sesión con Facebook:

Web

Apps para celulares

  • El inicio de sesión de Android puede usar diferentes clases para solicitar y administrar permisos. Consulta nuestro tutorial de inicio de sesión para Android para obtener más información.
  • El inicio de sesión de iOS puede usar diferentes métodos para solicitar permisos. Consulta nuestro tutorial de inicio de sesión para iOS a fin de obtener más información.
  • Windows Phone usa el parámetro scope al iniciar la asociación de URI.

Ten en cuenta que muchas de las API aquí mencionadas también pueden usarse para solicitar permisos adicionales en cualquier momento, no solo en el inicio de sesión inicial de la app.

Optimizar solicitudes de permisos

Como regla general, cuantos más permisos solicite una app, menos probable es que las personas usen Facebook para iniciar sesión en ella. De hecho, nuestras investigaciones indican que, si se solicitan más de cuatro permisos, la cantidad de inicios de sesión completados en la app se reduce de forma significativa.

Normas

Estas son algunas normas que puedes seguir al solicitar permisos, tanto durante como después del inicio de sesión:

  • Solo solicita los permisos que sean imprescindibles para la app.

  • Solicita los permisos en el contexto en el que se requieran. Por ejemplo, si tu app quiere mostrar lugares de interés cerca de la ubicación de una persona, solicitar user_location justo antes de mostrar esa información permite a la persona entender mejor por qué se solicita el permiso.

  • Separa la solicitud de permisos de lectura y de publicación. Para obtener más información, consulta a continuación.

  • Nunca solicites permisos que creas que podrías necesitar en el futuro. Las personas sospecharán y puede que rechacen tu app.

  • Avisa con antelación por qué solicitas un permiso. Explicar por qué necesitas acceso a algo aumentará las probabilidades de que estén dispuestas a compartirlo.


Permisos de publicación

Las apps deben separar la solicitud de permisos de lectura y de publicación. Planifica tu app para solicitar la cantidad mínima de permisos de lectura en el inicio de sesión inicial y, luego, los permisos de publicación cuando una persona realmente los necesite, por ejemplo, cuando quiera crear una historia de Open Graph desde la app. Esto brinda la mejor experiencia de usuario y optimiza la conversión.

Es posible que recibas alertas para desarrolladores si tu app solicita permisos de lectura y de publicación consecutivos. Para dejar de recibir estas alertas, separa las solicitudes o sigue las normas a continuación para casos excepcionales.

En el caso excepcional de que tu app solicite permisos de publicación por adelantado (por ejemplo, una app que solo publique el estado de ánimo del usuario en Facebook), solicita únicamente los permisos de lectura mínimos en el inicio de sesión inicial. Después de que la persona inicia sesión, muéstrale una pantalla que explique por qué tu app necesita permisos de publicación y permite que acepte la solicitud de permiso de publicación al hacer clic en un botón. Esto le proporcionará más contexto y mejorará tu conversión.

Una instancia en la que es posible que debas solicitar permisos de lectura y escritura consecutivos debe producirse la primera vez que asocies una cuenta de correo electrónico con la cuenta de Facebook de una persona. Por lo general, esto ocurre cuando alguien quiere compartir una historia en su biografía de Facebook. Cuando tu app cree el cuadro de diálogo de inicio de sesión, la persona verá dos cuadros de diálogo seguidos, uno para conectar su cuenta a tu app y otro que solicita permisos de publicación. En este caso, asegúrate de que los únicos permisos de lectura que solicites sean public_profile. Esto proporciona la mejor experiencia de usuario porque el usuario quiere publicar desde tu app y no suele interesarle conceder permisos de lectura adicionales. También mejorará tu conversión.

Comprobar los permisos actuales

Facebook da a las personas el control total sobre los permisos que conceden a una app. Ese control va más allá del punto en el que ven el cuadro de diálogo de inicio de sesión. Pueden elegir no conceder determinados permisos durante el proceso de inicio de sesión. También pueden revocar permisos en su configuración de privacidad de Facebook en cualquier momento. Las apps deben comprobar la validez de los permisos necesarios antes de intentar llamar a una API. Por ejemplo, deben comprobar que el permiso email aún esté concedido antes de enviar un mensaje.

En el caso de las apps web, proporcionamos un punto de conexión de API Graph para recuperar una lista de los permisos concedidos:

GET /{user-id}/permissions

La llamada debe realizarse con un token de acceso o con el token de acceso de tu app. La llamada devolverá una cadena JSON que contiene los nombres de los permisos que se concedieron a la app y su estado:

{
  "data": [
    {
      "permission": "public_profile",
      "status": "granted"
    },
    {
      "permission": "email",
      "status": "granted"
    },
    {
      "permission": "user_friends",
      "status": "declined"
    }
  ]
}

También proporcionamos métodos en los SDK de iOS y Android que brindan representaciones compatibles con la plataforma de los permisos concedidos a tu app.

Administrar los permisos faltantes

Cuando una app solicita permisos, las personas pueden denegarlos por completo, no concederlos totalmente o cambiarlos más adelante. A fin de brindar una gran experiencia, las apps deben desarrollarse para manejar estas situaciones.

En primer lugar, las apps deben poder manejar los permisos que se solicitaron, pero no se concedieron:

  • Comprueba los permisos concedidos antes de intentar usar API que los solicita.
  • Detecta errores de permisos devueltos cuando se realiza una solicitud a la API sin el permiso correcto. Este es un ejemplo de error:
{
  "error": {
    "message": "(#200) The user hasn't authorized the application
     to perform this action",
    "type": "OAuthException",
    "code": 200
  }
}

Si una app detecta que una persona denegó algunos permisos (o todos), puede volver a solicitar los permisos necesarios en el proceso de inicio de sesión una vez. Sin embargo, esta es una experiencia negativa y debe evitarse de ser posible. Si una persona elige activamente no conceder un permiso específico a una app, es poco probable que cambie de opinión, aunque se le siga solicitando. En cambio, haz lo siguiente:

  • Si una persona rechaza el cuadro de diálogo de inicio de sesión, explica de manera clara y directa por qué solicitas cada permiso. Luego, permite a la persona hacer clic o tocar para regresar al cuadro de diálogo de solicitud de permiso. No la redirijas a un cuadro de diálogo de solicitud de permiso sin una explicación.

  • Si una persona denegó un permiso a tu app, el cuadro de diálogo de inicio de sesión no permitirá que tu app vuelva a solicitarlo a menos que incluyas auth_type=rerequest con la solicitud.

  • Para los casos en los que una persona haya concedido solo algunos permisos, solicita únicamente los permisos faltantes en el momento en que se necesiten. Por ejemplo, si tu app envía confirmaciones de pedidos al correo electrónico de los usuarios, solo solicita email cuando realicen un pedido.

  • A menos que los permisos que solicitas en el cuadro de diálogo de inicio de sesión sean fundamentales para la funcionalidad de tu app y una función no esté disponible sin ellos, permite que las personas continúen usando tu app sin los permisos.

Puedes recibir alertas para desarrolladores si tu app dirige a los usuarios a los cuadros de diálogo de permisos de forma reiterada después de que deniegan permisos. Para dejar de recibir estas alertas, sigue estas normas.

Revocar permisos

Las apps pueden permitir a las personas revocar los permisos concedidos anteriormente. Por ejemplo, tu app podría tener una página de configuración que permita a un usuario desactivar el envío de correo electrónico. Esa página de configuración también podría revocar el permiso email al mismo tiempo.

Puedes revocar un permiso específico realizando una llamada a un extremo de la API Graph:

DELETE /{user-id}/permissions/{permission-name}

Esta solicitud debe realizarse con un token de acceso de usuario o un token de acceso a la app para la app actual. Si la solicitud se realiza correctamente, recibirás una respuesta true.


Revocar el inicio de sesión

También puedes permitir que las personas desautoricen por completo una app o revoquen el inicio de sesión realizando una llamada a este extremo de la API Graph:

DELETE /{user-id}/permissions

Esta solicitud debe realizarse con un token de acceso de usuario válido o un token de acceso a la app para la app actual. Si la solicitud se realiza correctamente, tu app recibirá una respuesta true. Si la llamada es satisfactoria, los tokens de acceso de usuario para la persona se invalidarán y tendrá que volver a iniciar sesión. Como estás desautorizando a tu app, la persona también tendrá que otorgar acceso a tu app como si iniciara sesión por primera vez.

Guías de la plataforma

AndroidiOSWeb