【问题标题】:com.facebook.sdk error 2 on iOSiOS 上的 com.facebook.sdk 错误 2
【发布时间】:2012-12-19 01:23:49
【问题描述】:

我有一个可以在 iOS 和 Android 上运行的 Phonegap 应用。该应用程序具有 Facebook 登录功能,该功能直到几天前才有效。我们的一些 beta 测试人员报告了“无法完成 com.facebook.sdk 错误 2 的操作”错误。这些测试人员的设备各不相同:iPhone 5、iPhone 4s、iPod Touch、iOS 5.1.1 和 iOS 6.0。

我们使用最新的 Facebook SDK 和 Phonegap Facebook 登录插件 (https://github.com/davejohnson/phonegap-plugin-facebook-connect/)。

我做了一些研究,发现可能出现此错误的原因如下:

  • 我的 info.plist 文件中的 BundleIdentifier 和 BundleURLName 与我的 Facebook 应用程序设置中 Native iOS 应用程序下的 Bundle ID 不匹配。
  • 应用仍处于沙盒模式
  • 该应用在 Facebook 设置中被禁用(设备设置 -> Facebook -> 允许这些应用使用您的帐户)。
  • iOS 6.0 不允许同时请求读写权限(不确定我是否有这个权限)。

情况如下:

这是一个非常不一致的错误(就我而言)。如果我在“允许这些应用程序使用您的帐户”中关闭应用程序(在我的情况下,应用程序在此处列出),我只能自己重现错误,但我可以通过再次允许应用程序轻松修复错误。目前大多数测试人员(不再)没有这个错误,但错误仍然存​​在于 iPod 上(该应用程序也未在“允许这些应用程序使用您的帐户”中列出)。

有人知道我为什么会遇到这个错误吗?

【问题讨论】:

  • 这通常发生在 oAuth 失败的情况下。仅当您请求读取权限或写入权限时才会发生这种情况。我希望你不要同时要求他们两个。它也只会在使用 Facebook 应用程序或 iOS6 本机设置或 m-site 的身份验证时失败。
  • 不,我不是同时要求读取和发布权限。我不确定第二个问题。我怎样才能找到这个?

标签: ios facebook cordova phonegap-plugins facebook-ios-sdk


【解决方案1】:

事实证明:com.facebook.sdk 错误 2 可以转化为许多事情。我正在寻找某种 Facebook SDK 错误翻译表,但我找不到。就我而言: com.facebook.sdk 错误 2 发生是因为连接超时。收到此错误的用户网络/WiFi 连接不佳

我们实施了一个错误记录系统,每次登录 Facebook 时发生错误时都会记录错误详细信息。在这些日志中,我们可以看到经常发生 com.facebook.sdk 错误 2,但每次用户在几秒钟后尝试再次登录时,它都会得到解决。

这可能是由于我无法找到正确的文档,但我对这些 SDK 错误的模糊性感到非常沮丧。有很多关于权限询问的文档(这可能导致 com.facebook.sdk 错误 2),但显然这个错误可能是由更多的事情引起的。很高兴看到这也记录在某个地方。

【讨论】:

  • 在我看来 FBError.h 文件包含定义 Facebook 错误代码的枚举,对应于 2 的错误标识符是 FBErrorLoginFailedOrCancelled。
  • 嗯,这是一些澄清。但是,是什么导致了“FBErrorLoginFailedOrCancelled”错误?它仍然很笼统,并没有说明导致该错误的原因。所以我仍然认为需要随附文档来找到这些错误的来源。
  • 在我的情况下,发生此错误是因为该应用处于沙盒模式,并且我使用的测试帐户不是该应用的开发人员或管理员。
【解决方案2】:

在我使用旧的 iOS 5.0 以获得更大的设备覆盖率时,我一直在弄清楚这个错误的原因。我刚刚通过 facebook 请求调试收到错误 400。所以最后,我发现原因在于 FBSession 的未知 FBSessionDefaultAudience (在 6.0+ 进行测试,原生 facebook api 给了我一个错误原因)。而当我使用

+ (BOOL)openActiveSessionWithPublishPermissions:(NSArray*)publishPermissions
                                defaultAudience:(FBSessionDefaultAudience)defaultAudience
                                   allowLoginUI:(BOOL)allowLoginUI
                              completionHandler:(FBSessionStateHandler)handler;

这个错误终于消失了。

【讨论】:

    【解决方案3】:

    这发生在我正在使用的应用程序中。我可以通过转到我的 iPhone 设置,选择 Facebook,点击我的名字,然后点击“删除帐户”来解决这个问题。

    之后我可以毫无问题地使用该应用登录。

    我回到设置 | facebook 并重新提交了我的凭据。

    该应用仍然可以正常运行。

    【讨论】:

    • 这花了我 5 个小时的时间。队友的欢呼声。废话是,它甚至不是一个“适当的”修复,所以我仍然不知道如何在代码中处理这个问题。感谢您至少解决了大部分头痛的问题! :)
    【解决方案4】:

    当我忘记检查 Native iOS App(在 Facebook 开发者页面中)并输入我的 Bundle ID 时,我遇到了这个错误,这与 Xcode 项目中的 Bundle 标识符相同。 (最后包括你的项目名称。)我还在 Facebook 开发者页面中设置了启用沙盒模式的设置。我也禁用了沙盒模式来完成这项工作。

    【讨论】:

    • 就像我在问题要点 1 和 2 以及 5 和 6 中提到的那样,情况并非如此。
    【解决方案5】:

    我们遇到了同样的问题。事实证明,原因实际上是在 FB 端超时,特别是如果在“FB 登录”页面仍然打开并且用户单击“取消”时发生此超时。在这种情况下,总是会重新调整错误 2。因此,如果您想重复并测试这种情况,只需在连接 FB 时单击“取消”按钮即可。

    【讨论】:

      【解决方案6】:

      在我的例子中,我使用我的公司帐户创建了应用程序,但忘记添加我的个人资料和开发人员角色。在我想通之后,一切都很顺利。

      干杯。

      【讨论】:

        【解决方案7】:

        先尝试:

        Go to Settings app -> Facebook -> Your App -> Switch it off and back on again.
        

        这对我有用,并且不需要我按照@seans23 的建议实际删除 fb 帐户并重新登录。如果它不起作用,我会尝试下一次,但这显然在重置状态方面确实有技巧。

        【讨论】:

          【解决方案8】:

          这种方法对我有用。 (iOS 8)

          上下文:

          • FB“登录”按钮未在 Safari 中打开 FB 应用或 FB
          • 弹出的 FB SDK 错误。 2.
          • “我的应用程序”未显示在 FB 设置中以便启用使用。

          解决办法:

          • 清除 Safari Web 缓存(可能是可选的)
          • 删除 Facebook 应用
          • 删除 Facebook Messenger
          • 安装您的应用并登录

          我们的想法是删除 Facebook 应用程序和 Messenger。

          【讨论】:

            【解决方案9】:

            对我来说,原因是我在模拟器上测试我的应用程序。我想分享一张照片,但没有出现对话框,所以我插入了我的 iPhone,之后一切都很顺利!

            【讨论】:

            • 我从这个线程中学到的是错误 2 可能意味着任何事情。这也是我的原因。有趣的是,我能够登录,但在尝试共享时遇到此错误。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-29
            • 1970-01-01
            • 2013-03-27
            相关资源
            最近更新 更多