【问题标题】:"The app must ask for a basic read permission at install time"“该应用程序必须在安装时请求基本读取权限”
【发布时间】:2012-09-08 17:22:42
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    在最新的 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 - 表示读取的字符串数组 在身份验证流程中请求的权限。基本信息 首次登录时必须明确请求权限,并且没有 更长的推断,(取决于主动迁移。)这是不允许的 将发布权限传递给此方法。

    【讨论】:

      【解决方案2】:

      我想补充一点,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.
      

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 我要求 @"user_about_me" 仍然收到此错误。怎么了??
        • 当您收到此错误时,您是否只要求 user_about_me?此外,如果您可以提供您正在使用的代码,那将有所帮助。
        • 感谢问题已经解决。 Facebook 上有些滞后
        • 这真是糟糕的设计。我的应用程序只需要发布到用户的新闻提要而不阅读任何内容。文档说It is important that you do not simply attempt to call the two individual methods back-to-back to replace either of the deprecated functions. 除了在某个随机时间弹出一个对话框之外,我应该如何先请求读取权限而不要求他们背靠背?
        • 随 3.5 发布的共享对话框(目前处于有限测试阶段)应该可以帮助您摆脱凯文。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多