Administrar permisos rechazados

Cuando las personas crean una cuenta o inician sesión en tu aplicación mediante el inicio de sesión con Facebook, tienen la oportunidad de conceder los permisos que solicitas. Sin embargo, también pueden elegir rechazar todos los permisos, excepto el del perfil público. Las personas podrían optar por hacer esto si no se sienten cómodas con la idea de compartir esta información con la aplicación, o si no saben con seguridad cómo se usará su información para mejorar su experiencia.

Cuando las personas eligen rechazar un permiso, es importante que la aplicación respete su decisión y siga ofreciendo una gran experiencia.

En general, una aplicación tiene tres opciones:

  1. Seguir adelante sin la información
  2. Explicar por qué se necesita la información y volver a solicitarla
  3. Obtener la información por otros medios

Seguir adelante sin la información

En algunos casos, el permiso solicitado no es necesario para que la aplicación funcione. De ser así, lo más sencillo es respetar la negativa y conducir a las personas a la aplicación.

En el ejemplo siguiente, Flickr Finder podría ofrecer mejores recomendaciones de películas si dispone del permiso user_likes. Sin embargo, como la persona no lo concedió, Flickr Finder se limita a presentar recomendaciones más genéricas.

Esta es la opción más sencilla y respetuosa con las personas que deciden rechazar determinados permisos.

Explicar el motivo y volver a solicitar el permiso

Las personas pueden elegir rechazar un permiso porque no entienden para qué necesita la aplicación esa información. En este caso, la aplicación podría mostrar un cuadro de diálogo que explique esta necesidad y el modo en que mejorará la experiencia.

En el ejemplo siguiente, Flickr Finder muestra un cuadro de diálogo donde explica que con una dirección de correo, la aplicación podrá enviar actualizaciones cuando se tengan nuevas películas disponibles. El botón "Agregar correo electrónico" devuelve a la persona al proceso de inicio de sesión con Facebook, donde puede conceder el permiso email.

Observa que, en este ejemplo, la persona sigue teniendo la opción de no conceder el permiso email.

Esta estrategia se puede utilizar para permisos esenciales o muy deseables para el funcionamiento de la aplicación.

Obtener la información por otros medios

Algunos datos son muy sencillos de obtener por cuenta propia.

En este ejemplo, Flickr Finder quiere recopilar la fecha de nacimiento de una persona para ofrecerle películas apropiadas para su edad. Si una persona rechaza compartir la fecha de nacimiento al iniciar sesión con Facebook, Flickr Finder puede crear un espacio donde recopilar esta información dentro de la aplicación, independiente del proceso de inicio de sesión con Facebook. Recomendamos hacerlo cuando la persona haya tenido tiempo de familiarizarse con la aplicación, de modo que advierta mejor cómo el permiso podría mejorar su experiencia.

Algunos ejemplos de la información que se podría recopilar de este modo son user_hometown, user_location, user_birthday e incluso email.

Detectar permisos rechazados

Cuando las personas rechazan permisos durante un proceso de inicio de sesión con Facebook, la aplicación puede detectarlo fácilmente y aplicar alguna de las estrategias explicadas anteriormente.

SDK para Android

En Android, puedes invocar el método getDeclinedPermissions del objeto AccessToken en el SDK de Facebook para Android.

SDK para iOS

En iOS, puedes invocar el método [FBSDKAccessToken declinedPermissions] en el SDK de Facebook para iOS.

SDK para JavaScript

Para detectar permisos rechazados, puedes llamar al perímetro permissions del objeto User de la API Graph. Puedes obtener cualquier permiso rechazado iterando la respuesta:

FB.api('/me/permissions', function(response) {
  var declined = [];
  for (i = 0; i < response.data.length; i++) { 
    if (response.data[i].status == 'declined') {
      declined.push(response.data[i].permission)
    }
  }
  alert(declined.toString())
});

API

Para detectar permisos rechazados, puedes llamar al perímetro permissions del objeto User en la API Graph:

GET https://graph.facebook.com/me/permissions?access_token=USER_ACCESS_TOKEN

Lo anterior arroja una respuesta con la forma:

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

Esto indica a la aplicación que la persona concedió los permisos user_birthday y public_profile, pero que decidió rechazar el permiso email.

Resumen

Manejar el rechazo de permisos con elegancia es importante para ofrecer una gran experiencia de inicio de sesión con Facebook.

Las estrategias aquí descritas garantizan que las personas que descarguen e instalen la aplicación puedan iniciar sesión sin encontrarse con experiencias molestas y frustrantes que afecten a la reputación y la calificación de la aplicación en la tienda.