iOS Facebook SDK v4.1 - 如何根据需要设置权限

时间:2015-07-28 20:13:58

标签: ios facebook facebook-graph-api facebook-ios-sdk

我在我的应用程序中使用iOS FBSDK,允许Facebook作为登录手段。我的应用程序将要求用户披露他们的年龄,我想使用Facebook的登录流程来强制执行这个要求。但是,我无法按要求设置任何内容(公共配置文件除外,默认情况下是必需的)。我想避免告诉用户他们无法使用该应用,直到他们进入他们的帐户设置并打开它。它具有破坏性的用户体验,应用程序确实需要某些权限才能运行。

我设置了登录按钮的读取权限,如下所示:

self.loginButton.readPermissions = @[@"public_profile", @"email", @"user_photos", @"user_birthday"];

看到这个:

enter image description here

这一切都可以吗?当我查看与我自己的Facebook帐户绑定的应用程序时,我看到一些需要权限的(Tinder,Glassdoor等),所以我认为必须有办法实现。

enter image description here

1 个答案:

答案 0 :(得分:4)

使用Facebook OAuth对话框时,无法根据需要标记特定权限。

您看到的行为差异很可能是由于您安装应用程序的时间以及这些应用程序使用的Graph API版本。 Graph API 1.0没有提供人们撤销特定读取权限的能力,而且(我猜)当你安装这些应用程序时,他们的目标是1.0。使用针对Graph API 2.0及更高版本的应用,人们可以撤消特定权限(public_profile除外),并且应用需要准备好处理丢失的权限。

您看到的设置对话框反映了用于安装该特定应用的Graph API版本。 2014年4月之后创建的任何Facebook App ID都会自动定位创建时生效的Graph API的当前版本(2.x),并且预先存在的应用程序在今年早些时候迁移到2.x.因此,在安装应用程序时,人们将始终能够拒绝public_profile以外的权限,但对于已安装的应用程序,其设置反映了安装应用程序时生效的版本。