【问题标题】:The operation couldn’t be completed. (com.facebook.sdk error 2.) ios6操作无法完成。 (com.facebook.sdk 错误 2.) ios6
【发布时间】:2013-03-27 17:33:39
【问题描述】:

您好,我正在使用 ios6 进行 facebook 登录,我在本机弹出窗口中收到此错误

操作无法完成。 (com.facebook.sdk 错误 2。)

这是我使用的场景。 (我在模拟器上运行这个

我已经通过设置登录到 facebook 应用程序,我尝试登录到我的应用程序并且它工作正常。

然后我从设置中注销了 facebook,并以不同的用户再次登录。然后我尝试登录该应用程序。我收到这个错误。

我尝试使用命令退出应用程序

[FBSession.activeSession closeAndClearTokenInformation];

但是没有用。

facebook 应用程序中的包标识符与我的 ios 应用程序中的相同。

这是我用来登录的代码

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email", nil];
    [FBSession openActiveSessionWithReadPermissions:permissions
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session,
       FBSessionState state, NSError *error) {
         [self sessionStateChanged:session state:state error:error];
     }];

感谢任何帮助。

这是我遇到的错误

Domain=com.facebook.sdk Code=2 "操作无法完成。 (com.facebook.sdk 错误 2。)“用户信息 = 0x9535330 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginDisallowedWithoutError, com.facebook.sdk:ErrorSessionKey=, 过期日期:(空),刷新日期:(空),尝试刷新日期: 0001-12-30 00:00:00 +0000,权限:(null)>}

注意 我在不同的场合遇到了同样的错误。当时这是我代码中的一个错误

而不是授予权限

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email",@"birthday", nil];

我做错了

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email,birthday", nil];

解决方案 即使在更正代码之后,我也遇到了同样的错误。我必须从 ios 设置屏幕注销并登录 facebook。一旦我这样做了,正确的代码就不会引起任何问题。请注意,该问题仅发生在先前执行错误代码的设备上。请注意确定导致问题的原因, 希望此信息对某人有所帮助

【问题讨论】:

标签: ios facebook ios6 facebook-login


【解决方案1】:

我通过在登录时传递 nil 权限来解决我的问题。

[FBSession openActiveSessionWithReadPermissions:nil
                                       allowLoginUI:YES
                                  completionHandler:

【讨论】:

    【解决方案2】:

    对我来说,问题是权限无效 - 我请求的是“生日”而不是“user_birthday”。遗憾的是,错误消息至少不是最低限度的描述性 - 只是说“权限无效”而不是 ERROR CODE 2 会为我节省很多时间。

    【讨论】:

      【解决方案3】:

      这对我有用:

      • 转到 iPhone 的设置应用程序。
      • 打开您的 Facebook 设置
      • 向下滚动到您的应用并确保您的应用允许 facebook 互动。

      这可能发生在任何设备上,因此在您的应用中,您必须确保正确处理此错误。 我认为您向用户反馈了使用 Facebook 登录失败的原因,并要求用户检查其设备上的 Facebook 设置。

       - (void)facebookSessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error
      {
          switch (state) {
              case FBSessionStateOpen:
                  // handle successful login here
              case FBSessionStateClosed:
              case FBSessionStateClosedLoginFailed:
                  [FBSession.activeSession closeAndClearTokenInformation];
      
                  if (error) {
                      // handle error here, for example by showing an alert to the user
                      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Could not login with Facebook"
                                                                      message:@"Facebook login failed. Please check your Facebook settings on your phone."
                                                                     delegate:nil
                                                            cancelButtonTitle:@"OK"
                                                        otherButtonTitles:nil];
                      [alert show];
                  }
                  break;
              default:
                  break;
          }
      

      【讨论】:

      • 警报视图应该包含在 if (error) {} 块中,现在警报会在每次用户注销时显示,实际上,它只需要在出现错误时显示。
      • 谢谢!我已经在答案中更改了它。
      • 非常感谢。很好的解释:)
      【解决方案4】:

      我遇到了同样的问题,花了一整天的时间才弄清楚问题所在。 Facebook SDK 的这个错误信息非常模糊。由于 myApplication 中的 openURL: 方法被覆盖,我遇到了这个问题。我删除了覆盖的方法,Facebook 登录工作正常。

      【讨论】:

      • 您是否确保通过调用返回[FBAppCall handleOpenURL:url sourceApplication:sourceApplication]; 来实现openURL:?这是 Facebook SDK 正常工作所必需的,但只要您这样做,您应该仍然能够实现 openURL 以供其他用途。
      【解决方案5】:

      此错误的另一个潜在原因:当 Facebook 用户未在应用的管理员、开发人员或测试人员中列出时,尝试在沙盒模式下获取 Facebook 应用的权限。

      【讨论】:

        【解决方案6】:

        我遇到了类似的问题。当我从设置切换 fb 用户时出现错误。 Facebook authorization fails on iOS6 when switching FB account on device这解决了我的问题

        【讨论】:

        • 请考虑添加该问题的哪一部分解决了您的问题。它包含三个答案,其中没有一个被检查为被接受的答案。简单地泛泛地指出另一个问题作为答案是没有帮助的。
        【解决方案7】:

        检查您的项目的 Bundle 标识符,并为您在 developer.facebook.com 上创建的应用程序提供 Bundle 标识符,它们是否相同。

        【讨论】:

        • @coolcool1994:这不是 App ID。它是 Facebook 应用程序“基本信息”的“原生 iOS 应用程序”部分下的“Bundle ID”。
        • 另外,请记住,Bundle ID 检查区分大小写。
        猜你喜欢
        • 2023-03-29
        • 2013-04-09
        • 1970-01-01
        • 1970-01-01
        • 2013-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多