“应用程序必须在安装时请求基本的读取权限”

时间:2012-09-15 23:28:50

标签: ios facebook-graph-api permissions authorization facebook-oauth

我正在使用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.}

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

3 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分: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.

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

答案 2 :(得分: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];
                            }];

从方法docs:

  

readPermissions - 表示读取的字符串数组   在身份验证流程中请求的权限。 basic_info   必须在首次登录时明确请求权限,否则为否   更长的推断,(受主动迁移影响。)不允许   将发布权限传递给此方法。