18

我正在使用 iOS 内置框架进行连接。请求"publish_stream"权限后,FB返回错误:

Error Domain=com.apple.accounts Code=7 "The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time." UserInfo=0x145ad6a0 {NSLocalizedDescription=The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time.}

这里发生了什么?显示两个用户权限弹出窗口是一种不太理想的用户体验。

4

3 回答 3

17

第一次,您必须请求读取权限。您最初无法使用任何类型的发布/写入权限对用户进行身份验证。在那之后你应该做的是,在你的应用程序中有意义的地方,请求 publish_stream 权限。绝对不要做初始权限,然后立即请求 publish_stream 权限。

请参阅https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-3.0-to-3.1/中的此说明,“分别请求读取和写入权限”部分。尽管这适用于 iOS 版 Facebook SDK,但它是内置框架中相同要求的扩展。

于 2012-09-26T03:02:50.540 回答
5

我想补充一点,Facebook 文档中有一个额外的警告:

// if a user has *never* logged into your app, you MUST include one of
// "email", "user_location", or "user_birthday".  Other read 
// permissions can also be included here.

不这样做会导致同样的错误。

于 2012-12-11T23:23:24.827 回答
4

在最新的 SDK (v3.5) 中,您还需要在权限数组中传递 @"basic_info"。它曾经是隐含的,但现在不是了。如果不这样做,您将收到“应用程序必须在安装时要求基本读取权限”消息

  [FBSession openActiveSessionWithReadPermissions:@[@"email", @"basic_info"]
                                 allowLoginUI:YES
                            completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
                              [self sessionStateChanged:session state:state error:error];
                            }];

从方法文档:

readPermissions - 一个字符串数组,表示在身份验证流程中请求的读取权限。basic_info 权限必须在首次登录时显式请求,并且不再推断,(取决于主动迁移。)不允许将发布权限传递给此方法。

于 2013-06-28T14:45:05.910 回答