iOS Facebook SDK openActiveSessionWithReadPermissions永远不会返回某些FB应用程序

时间:2012-11-08 15:07:33

标签: ios facebook facebook-ios-sdk

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

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

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

  1. 在调用openActiveSessionWithReadPermissions(请求@“电子邮件”权限)时,会启动iOS Facebook应用程序并向用户显示我们应用程序的基本信息授权页面。
  2. 用户点击页面顶部的“登录”按钮。
  3. FB应用程序弹出另一个空白窗口,左上角有一个“取消”按钮。
  4. 从现在开始,用户没有做任何事情会让Facebook将控制权交还给我们的iOS应用程序。
  5. 但之后检查测试用户的页面会显示应用已获得授权。
  6. 如果我从设备上卸载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& ;烫发=电子邮件&安培; fbconnect = 1&安培; SSO = iphone-狩猎&安培; from_login = 1&安培; CLIENT_ID = LT; * our_app_id * GT;&安培; REFID = 9

    我发现在iOS 5.1和6.0硬件设备和6.0模拟器上这种行为是相同的。使用旧的FB应用程序,授权正确返回。我确信在应用程序管理页面中我没有正确设置一个神奇的,几乎没有记录的选项复选框,但我真的不知道如何找出问题所在。

    感谢您的任何建议!

1 个答案:

答案 0 :(得分: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>