1

我们正在编写一个与 Facebook 集成的原生 iOS 应用程序。几个月前,我们通过 developers.facebook.com 建立了一个占位符 FB 应用程序,并一直通过它进行所有测试。现在我们离发布更近了,我想我应该设置一个新的、干净的、“正确的”FB 应用程序,其中包含所有正确的应用程序描述/URL 字段/等。

作为第一步,我将新应用程序设置为与旧应用程序尽可能相似,并创建了一个新的测试用户。旧应用程序运行良好,所以我有理由相信我们的 iOS 代码是正确的(是的,我已经在 XCode 项目中切换了应用程序 ID 等等),但是当我们使用集成的新应用程序运行时,我们会得到这种行为尝试向用户授权应用程序时:

如果 iOS Facebook 应用已安装且测试用户已登录:

  1. 在调用 openActiveSessionWithReadPermissions(请求@"email" 权限)时,iOS Facebook 应用程序启动并向用户显示我们应用程序的基本信息授权页面。
  2. 用户单击页面顶部的“登录”按钮。
  3. FB 应用程序会弹出另一个空白窗口,左上角有一个“取消”按钮。
  4. 从此时起,用户所做的任何事情都不会让 Facebook 将控制权交还给我们的 iOS 应用程序。
  5. 但是之后检查测试用户的页面显示该应用程序被授权。

如果我从设备上卸载 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 应用程序,授权正确返回。我敢肯定,在应用程序管理页面中,我只是没有正确设置一个神奇的、几乎没有记录的选项复选框,但我真的不知道如何找出问题所在。

感谢您的任何建议!

4

1 回答 1

1

由于它没有返回到您的应用程序,您可能忘记将 URL 方案添加到您的 Info.plist。您应该有一个新条目,这是它的 XML 表示形式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
        <array>
        <dict>
                <key>CFBundleURLSchemes</key>
                <array>
                    <string>fbYOUR_APP_ID</string>
                </array>
        </dict>
        </array>
    </plist>
于 2012-11-12T20:12:14.550 回答