ios - 使用帐户框架访问 Facebook 时限制权限

标签 ios objective-c cocoa-touch facebook-login acaccount

在这方面我需要一些帮助....

所以我面临的问题是,在从 ACAccount 获取 Facebook 帐户时,警报 View 会通知太多权限。当我使用 Facebook 的 ACAccount 登录时,我收到一个警告框。

它说 APP_NAME 想要访问您的基本个人资料信息和 friend 列表

即使我的权限集是一个空数组,它也会出现。

NSArray * FB_PERMISSIONS = @[];
// or FB_PERMISSIONS = @[@"public_profile", @"likes", @"email"];
// It does not matter what the array is -> The alert has extra sentences.

ACAccountType *FBaccountType= [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSString *key = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"FacebookAppID"];;
NSDictionary *dictFB = [NSDictionary dictionaryWithObjectsAndKeys:key,ACFacebookAppIdKey,FB_PERMISSIONS,ACFacebookPermissionsKey, nil];
[_accountStore requestAccessToAccountsWithType:FBaccountType options:dictFB completion:

我想在这里做什么?

我只需要“public_profile”、@“email”和“likes”。警报显示 APP_NAME 想要访问您的个人资料,并代表您点赞。此外,APP_NAME 想访问您的基本个人资料信息和好友列表

为什么第二句话在那里?我该如何摆脱它?我可以看到许多应用程序没有显示关于基本个人资料和 friend 列表的第二行。

预期结果:

APP_NAME 想要访问您的个人资料和喜欢的内容。

更新:

检查我的答案以获得解决方案。

最佳答案

FB SDK 文档中没有任何内容对此进行解释。他们这样做是为了让用户可以使用 Facebook pop UI 并选择他们想要授权的权限。我想 Facebook 的设计理念是为用户提供尽可能多的控制权和透明度。但是随着操作系统的弹出窗口,它隐藏了很多权限。我想显示最少信息是 Apple 的设计理念。这最适合开发人员场景,因为用户通常会在看到应用程序请求如此多的权限时吓坏了。

无论如何,如果您查看FBSDKLoginManager+Internal.h,您可以检查系统登录的功能。进一步挖掘,我发现 FBSDKLoginButton 毫无意义。解决此问题的最佳方法是使用您自己的 FBSDKLoginManager 实例,并将系统帐户类型设置为 native ,如果您收到错误代码 306,则退回到默认登录机制。

Somehow ->> 这种方式不显示额外的权限。我不知道怎么办。我所知道的是,现在一切都水到渠成。

此外,您还必须为 ACAccountStoreDidChangeNotification 设置一个单独的监听器,以便处理一些边缘情况。但是,是的,\m/

关于ios - 使用帐户框架访问 Facebook 时限制权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33851624/

相关文章:

ios - 如何通过SSH访问iOS模拟器文件系统?

ios - 在 .framework 中添加 Bridging-Header

iphone - KVO 意外崩溃

ios/CoreML - 当keras模型转换为CoreML时,输入类型为MultiArray

cocoa-touch - applicationDidEnterBackground 用于保存应用程序数据的有用性

ios - 如何在 iOS 中将 HTML 映射到 NSAttributedString

ios - 表格 View 上的背景点击

ios - UIPanGestureRecognizer 超越限制

iphone - 方向改变时重新定位控件

ios - Swift 中的全局常量文件