6

背景

  • 最近升级到 Facebook SDK 3.2
  • 在设备和模拟器上测试(iOS 5.16.1
  • 仅在尝试对 Facebook测试用户进行身份验证时出现错误。

错误

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

UserInfo={com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginCancelled, com.facebook.sdk:ErrorInnerErrorKey=错误域=com.apple.accounts 代码=7}

重现步骤

  1. 清除模拟器或从设备设置中手动删除 Facebook 帐户。
  2. 通过 Facebook 的accounts/test-users端点创建一个测试用户。
  3. 在设备设置中添加 Facebook 帐户。
  4. 通过 openActiveSessionWithReadPermissions 进行身份验证并接受权限对话框。

预期结果

  • FBSessionStateHandler 块返回状态 == FBSessionStateOpen。
  • 一个零 NSError。

实际结果

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

解决方案尝试

  • 我已按照此问题中概述的步骤进行操作;即检查我的包名称,确保我的应用程序类型设置为Native/Desktop并将我在客户端中的应用程序机密设置为 NO。
  • 同样,我确保我只要求读取权限(即电子邮件)。
  • 我什至通过尝试使用ACAccountStore实例进行身份验证来完全绕过 Facebook SDK,并获得了相同的结果。
  • 同样,对于普通用户来说一切正常(非测试);所以它必须与配置和最近的 3.2 更改有关。
4

1 回答 1

0

1) Facebook 3.1 SDK 拆分读取和发布权限。在第一次身份验证调用中仅使用读取权限(例如,电子邮件)。两者都使用会破坏它并导致该一般错误。看起来 Facebook 的 SDK 实际上并没有做它应该做的事情:回退到旧的身份验证方法。David 告诉我更新的 Parse SDK 将使权限拆分更容易,但当然要由 Facebook 来修复他们 SDK 中的错误。

2)独立地,在设备的“设置”中退出 Facebook,然后重新登录后,我遇到的问题似乎已经消失。也许 iOS 集成出现故障?(但是,权限拆分问题在这里仍然适用。请确保您先阅读并稍后单独发布(例如,publish_actions),这是您第一次真正需要它的时候。)

于 2014-01-28T07:09:58.513 回答