Что делать, если ваш запрос на разрешение отклонен?

Когда люди создают аккаунты или входят в ваше приложение, используя «Вход через Facebook», они могут предоставлять разрешения, которые вы запрашиваете. При этом они имеют возможность отклонить любые разрешения, за исключением разрешения на доступ к публичному профилю. Люди могут отклонить разрешение, если они не хотят делиться запрашиваемой информацией с вашим приложением или не понимают, каким образом такая информация поможет удобнее работать с приложением.

Если человек отклоняет разрешение, важно, чтобы ваше приложение оставалось удобным и интересным для человека.

Приложение может отреагировать одним из трех следующих способов:

  1. Продолжить работу без получения запрашиваемой информации.
  2. Объяснить, почему нужна эта информация, и повторно запросить ее.
  3. Получить информацию самостоятельно.

Продолжить работу без получения запрашиваемой информации.

В некоторых случаях приложение может работать и без определенного разрешения. Тогда самым разумным решением будет отнестись с уважением к тому, что человек отклонил разрешение, и продолжить процесс его входа в приложение.

В примере ниже приложение Flick Finder может предоставлять улучшенные рекомендации по просмотру кинофильмов, если у него есть разрешение user_likes. Но если человек отклоняет это разрешение, Flick Finder просто предоставляет рекомендации более общего характера.

Это поведение свидетельствует об уважении к выбору человека, который решил отклонить разрешение.

Объяснить, почему вам нужна эта информация, и повторно запросить ее

Люди могут отклонить разрешение, потому что не понимают, зачем приложению нужна эта информация. В этом случае ваше приложение может вывести диалог, объясняющий, зачем нужна информация и каким образом она поможет сделать работу с приложением более удобной.

В примере ниже приложение Flick Finder выводит диалог, в котором объясняется, что, получив доступ к эл. адресу, приложение сможет присылать оповещения о выходе новых фильмов. Кнопка «Добавить эл. адрес» возвращает человека в процесс «Входа через Facebook», где он может предоставить разрешение email.

Примечание. В этом примере человек все еще имеет возможность отклонить разрешение email.

Эта стратегия может использоваться для получения разрешений, которые являются крайне важными или очень желательными для функционирования вашего приложения.

Получить информацию самостоятельно

Некоторую информацию можно достаточно просто собрать самостоятельно.

В рассматриваемом примере приложение Flick Finder хочет получить информацию о дате рождения человека, чтобы рекомендовать ему фильмы, подходящие по возрасту. Если человек решил не предоставлять информацию о дате своего рождения при входе через Facebook, Flick Finder может получить эту информацию самостоятельно, независимо от процесса «Входа через Facebook». Мы рекомендуем делать это после того, как у человека было время познакомиться с вашим приложением и он смог понять, каким образом данное разрешение поможет сделать приложение более удобным для него.

К информации, которую можно собрать таким путем, можно отнести такие данные, как user_hometown, user_location, user_birthday или даже email.

Выявление отклоненных разрешений

Если человек отклонил какое-либо разрешение в процессе входа через Facebook, ваше приложение может легко это обнаружить и отреагировать, используя одну из описанных выше стратегий.

Android SDK

В Android вы можете вызвать метод getDeclinedPermissions объекта AccessToken в Facebook SDK для Android.

iOS SDK

В iOS вы можете вызвать метод [FBSDKAccessToken declinedPermissions] в Facebook SDK для iOS.

JavaScript SDK

Чтобы выявить отклоненные разрешения, вы можете вызвать границу permissions объекта User API Graph. Вы можете получить отклоненные разрешения, повторив свой запрос, через отклик:

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

Чтобы выявить отклоненные разрешения, вы можете вызвать границу permissions объекта User API Graph:

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

Будет получен отклик в форме:

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

Это означает, что человек дал разрешения user_birthday и public_profile, но решил отклонить разрешение email.

Заключение

Вежливое поведение в случае отклонения человеком приглашений позволяет поддерживать хорошие отношения с людьми, которые используют функцию «Вход через Facebook».

Следуя одной из описанных выше стратегий, вы сможете добиться того, что люди, которые скачивают и устанавливают ваше приложение, будут входить в него, не испытывая раздражения и разочарования. Как результат: ваша репутация будет безупречна, а рейтинг приложения в магазине будет расти.