我们正在编写一个与 Facebook 集成的原生 iOS 应用程序。几个月前,我们通过 developers.facebook.com 建立了一个占位符 FB 应用程序,并一直通过它进行所有测试。现在我们离发布更近了,我想我应该设置一个新的、干净的、“正确的”FB 应用程序,其中包含所有正确的应用程序描述/URL 字段/等。
作为第一步,我将新应用程序设置为与旧应用程序尽可能相似,并创建了一个新的测试用户。旧应用程序运行良好,所以我有理由相信我们的 iOS 代码是正确的(是的,我已经在 XCode 项目中切换了应用程序 ID 等等),但是当我们使用集成的新应用程序运行时,我们会得到这种行为尝试向用户授权应用程序时:
如果 iOS Facebook 应用已安装且测试用户已登录:
- 在调用 openActiveSessionWithReadPermissions(请求@"email" 权限)时,iOS Facebook 应用程序启动并向用户显示我们应用程序的基本信息授权页面。
- 用户单击页面顶部的“登录”按钮。
- FB 应用程序会弹出另一个空白窗口,左上角有一个“取消”按钮。
- 从此时起,用户所做的任何事情都不会让 Facebook 将控制权交还给我们的 iOS 应用程序。
- 但是之后检查测试用户的页面显示该应用程序已被授权。
如果我从设备上卸载 Facebook 应用程序,从而强制在 Safari 中显示请求屏幕,我们会得到相同的行为,除了上面的第 (3) 点被替换为:
3) 设备提示“Safari 无法打开页面,因为地址无效”。这是它试图打开的地址:https ://m.facebook.com/dialog/permissions.request?_path=permissions.request&app_id= <*our_app_id*>&redirect_uri=fb<*our_app_id*>%3A%2F%2Fauthorize&sdk =ios&display=touch&type=user_agent&perms=email&fbconnect=1&sso=iphone-safari&from_login=1&client_id=<*our_app_id*>&refid=9
我发现这种行为在 iOS 5.1 和 6.0 硬件设备以及 6.0 模拟器上是相同的。使用旧的 FB 应用程序,授权正确返回。我敢肯定,在应用程序管理页面中,我只是没有正确设置一个神奇的、几乎没有记录的选项复选框,但我真的不知道如何找出问题所在。
感谢您的任何建议!