无法通过openActiveSessionWithReadPermissions与Facebook测试用户完成请求(错误代码7)

时间:2013-04-04 00:49:34

标签: ios facebook authentication ios6 facebook-ios-sdk

背景

  • 最近升级到Facebook SDK 3.2
  • 在设备和模拟器上进行测试(iOS 5.1 6.1
  • 只有在尝试验证Facebook 测试用户时才会出现错误。

错误

  

Facebook服务器无法满足此访问请求:暂时无法代表XXXXXX进行API调用。

     

UserInfo = {com.facebook.sdk:ErrorLoginFailedReason = com.facebook.sdk:SystemLoginCancelled,com.facebook.sdk:ErrorInnerErrorKey = Error Domain = com.apple.accounts Code = 7}

重现步骤

  1. 清除模拟器或从设备设置中手动删除Facebook帐户。
  2. 通过Facebook的帐户/测试用户端点创建测试用户。
  3. 在设备设置中添加Facebook帐户。
  4. 通过openActiveSessionWithReadPermissions&接受权限对话框。
  5. 预期结果

    • FBSessionStateHandler块返回state == FBSessionStateOpen。​​
    • 没有NSError。

    实际结果

    • FBSessionStateHandler块返回带有上述用户信息跟踪的error.fberrorCategory == FBErrorCategoryUserCancelled。

    解决方案尝试

    • 我按照this question中列出的步骤进行了操作;即检查我的包名称,确保我的应用类型设置为 Native / Desktop ,并将我的 App Secret in Client 设置为NO。
    • 同样,我确保我只要求读取权限(即电子邮件)。
    • 我甚至通过尝试使用 ACAccountStore 实例进行身份验证来完全绕过Facebook SDK。得到了相同的结果。
    • 同样,一切用户都可以正常使用(非测试);所以它必须与配置&最近的3.2变化。

1 个答案:

答案 0 :(得分:0)

1)Facebook 3.1 SDK分割读取和发布权限。在第一次身份验证调用中仅使用读取权限(例如,电子邮件)。使用两者将打破它并导致该一般错误。 Facebook的SDK似乎并没有真正做到它的意图:回归到旧的身份验证方法。大卫告诉我一个更新的Parse SDK将使权限分割变得更容易,但当然要由Facebook来修复他们SDK中的错误。

2)独立地说,我在设备的设置中退出Facebook之后似乎已经消失了这个问题,然后又回来了。可能是iOS集成中的一个小故障? (但是,权限拆分问题仍适用于此处。请确保先读取并稍后单独发布(例如,publish_actions),这是您第一次真正需要它时。)