Gestión de permisos rechazados

Cuando una persona crea una cuenta o inicia sesión en tu aplicación mediante el inicio de sesión con Facebook, tiene la ocasión de conceder los permisos que solicitas. Sin embargo, también puede denegar todos los permisos, excepto el del perfil público. Algunas de las razones por las que las personas deciden no conceder ciertos permisos incluyen no sentirse cómodos con la idea de compartir esta información con la aplicación, o no saber con seguridad cómo se usará su información para mejorar su experiencia.

Cuando una persona decide denegar un permiso, es importante que la aplicación lo respete 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 tu cuenta.

Seguir adelante sin la información

En algunos casos, el permiso solicitado no es necesario para que la aplicación funcione. En este caso, lo más sencillo es respetar la negativa y seguir adelante.

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 ha concedido, 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 solicitarlo

Es posible que una persona no conceda un permiso si no entiende 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 que explica que disponer de una dirección de correo le permitiría enviarte actualizaciones cada vez que haya disponibles nuevas películas. El botón “Añadir dirección de correo” devuelve a la persona al proceso de inicio de sesión con Facebook, donde puede conceder el permiso email.

Fíjate en que, en este ejemplo, la persona sigue teniendo la posibilidad de no conceder el permiso email.

Esta estrategia puede utilizarse para permisos esenciales o muy útiles para el funcionamiento de la aplicación.

Obtener la información por tu cuenta

Algunos datos son muy sencillos de obtener.

En este ejemplo, Flickr Finder quiere recopilar la fecha de nacimiento de una persona para ofrecerle películas apropiadas a su edad. Aunque la persona rechace compartir la fecha de nacimiento al iniciar sesión con Facebook, Flickr Finder puede crear un espacio ajeno al proceso de inicio de sesión con Facebook para obtener esta información. Recomendamos hacerlo una vez que la persona haya podido familiarizarse con la aplicación, de modo que comprenda mejor cómo el permiso podría mejorar su experiencia.

Algunos ejemplos de información que puede recopilarse de esto modo son user_hometown, user_location, user_birthday e incluso email.

Detección de permisos rechazados

Cuando una persona deniega permisos como parte de 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 en 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

El extremo debe arrojar 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 ha concedido los permisos user_birthday y public_profile, pero que ha decidido denegar el permiso email.

Resumen

Resolver con elegancia la denegación de permisos es importante para ofrecer a las personas una gran experiencia de inicio de sesión con Facebook.

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