22

嗨,我正在使用 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.)" UserInfo=0x9535330 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginDisallowedWithoutError, com.facebook.sdk:ErrorSessionKey=, expireDate: (null), refreshDate: (null), mappedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(null)>}

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

而不是给予许可

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

我做错了

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

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

4

7 回答 7

23

这对我有用:

  • 转到 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;
    }
于 2013-06-27T19:32:07.987 回答
9

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

于 2013-04-05T10:34:26.790 回答
8

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

于 2013-08-22T20:38:14.073 回答
3

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

[FBSession openActiveSessionWithReadPermissions:nil
                                       allowLoginUI:YES
                                  completionHandler:
于 2014-07-31T05:56:44.260 回答
0

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

于 2013-12-03T21:55:55.287 回答
0

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

于 2014-04-23T02:22:44.553 回答
0

我有一个类似的问题。当我从设置切换 fb 用户时出现错误。在设备上切换 FB 帐户时,iOS6 上的 Facebook 授权失败这解决了我的问题

于 2013-04-05T17:23:49.420 回答