处理被拒绝的权限

在创建帐户或使用 Facebook 登录功能登录您的应用时,人们可能会授予您请求的权限,也可能选择拒绝授予除公开档案权限以外的所有权限。如果他们觉得不便与您的应用分享某些信息,或者不理解您将以什么方式使用那些信息来改善他们的体验,就可能会选择拒绝。

当人们选择拒绝授予权限时,请务必尊重他们的决定,并依然向他们提供优良的体验。

通常而言,您的应用可通过三种方式进行回应:

  1. 继续运行而不收集相关信息
  2. 解释为什么需要相关信息并再次提出请求
  3. 自行收集信息

继续运行而不收集相关信息

在一些情况下,应用无需您请求的某些权限也可正常运行。此时,最简单的处理方法就是尊重用户的选择,继续将他们引导至应用中。

在以下示例中,Flick Finder 如果获得访问 user_likes 的权限,就可以更好地向用户推荐电影。不过,既然用户拒绝授予该权限,那 Flick Finder 就只提供一般性的电影推荐。

这是最简单的处理方法,并可让拒绝授予特定权限的用户深刻感受到您的尊重。

解释原因并再次请求

当用户不理解您的应用为何需要相关信息时,即可能拒绝授予权限。此时,您的应用可以向他们显示一个对话框,解释为什么需要相关信息,并说明将如何使用那些信息改善他们的体验。

在以下示例中,Flick Finder 显示了一个对话框,解释说有了电子邮箱,应用即可在新电影上线时通知用户。“Add Email”(添加电子邮箱)按钮可将用户带回 Facebook 登录流程,以便他们授予 email 权限。

请注意:在此示例中,用户仍可以拒绝授予 email 权限。

在请求对应用的功能性而言很关键或非常有用的权限时,可采用这一策略。

自行收集信息

您可以自行收集某些简单的信息。

在此示例中,Flick Finder 想要收集用户的生日,以便向他们推荐适当年龄的电影。如果用户在通过 Facebook 登录应用时拒绝分享生日信息,那么 Flick Finder 还是可以在应用内创建一个用于收集此信息的位置,并将其与 Facebook 登录流程分离。我们建议在用户经过一段时间熟悉您的应用后再使用此策略,这样,他们能够更好地理解这一权限能够如何改善他们的体验。

可通过此种方法收集的信息包括:user_hometownuser_locationuser_birthday 甚至是 email

检测被拒绝的权限

用户在 Facebook 登录流程中拒绝授予某些权限时,我们可让您的应用轻松检测出被拒绝的权限,并通过上述三种策略之一进行回应。

Android SDK

在 Android 环境中,您可以在 Android 版 Facebook SDK 中调用 AccessToken 对象的 getDeclinedPermissions 方法。

iOS SDK

在 iOS 环境中,您可以在 iOS 版 Facebook SDK 中调用 [FBSDKAccessToken declinedPermissions] 方法。

JavaScript SDK

要检测被拒绝的权限,您可以调用图谱 API 的 User 对象的 permissions 连线。您可以在响应中通过迭代来收集所有被拒绝的权限:

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

要检测被拒绝的权限,您可以调用图谱 API 的 User 对象的 permissions 连线:

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_birthdaypublic_profile 权限,但选择拒绝授予 email 权限。

总结

适当地处理被拒绝的权限是为用户提供良好 Facebook 登录体验的重要组成部分。

实施以上策略有助于确保下载并安装您的应用的用户顺利登录使用,进而提升您的应用的声誉和应用商店评分。