在 iOS 6 上 Facebook 登录失败

Posted

技术标签:

【中文标题】在 iOS 6 上 Facebook 登录失败【英文标题】:Facebook login failing on iOS 6 【发布时间】:2013-08-03 21:49:43 【问题描述】:

当我尝试使用 Facebook ios SDK 登录时,我收到错误操作无法完成(com.facebook.sdk 错误 2)。

会话的状态是:FBSessionStateClosedLoginFailed。

这是我现在的代码:

-(void) callFBService

    NSArray *permissions = [[NSArray alloc] initWithObjects:@"email, publish_stream, user_likes, friends_likes", nil];
    [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES
                              completionHandler:^(FBSession *fbsession,
                                                  FBSessionState status,
                                                  NSError *error) 
          if(error)
          
              NSLog(@"Session error");
              [self fbResync];
              [NSThread sleepForTimeInterval:0.5];   //half a second
              [FBSession openActiveSessionWithReadPermissions:permissions
                                                 allowLoginUI:YES
                                            completionHandler:^(FBSession *fbsession, FBSessionState status, NSError *error) 
                                                [self sessionStateChanged:fbsession state:status error:error];
                                            ];

          
          else
              [self sessionStateChanged:fbsession state:status error:error];

     ];

我已经尝试了以下帖子中的所有内容:

The operation couldn’t be completed. (com.facebook.sdk error 2.) ios6 Facebook Registration : The operation couldn't be completed (com.facebook.sdk error 2) Facebook SDK 3.1 iOS: Handle login if user remove app from Facebook Settings

有什么想法吗???请!

【问题讨论】:

我使用的是最新版本的 SDK。 另外,该应用程序是允许的(在设置/Facebook上) 【参考方案1】:

您传递的 publish_stream 具有读取权限,但 publish_stream 是写入权限。它也已被弃用(改用publish_actions)。尝试删除该权限。在您让用户以读取权限登录后,您需要单独请求该权限。请参阅 SDK 文档:https://developers.facebook.com/docs/technical-guides/iossdk/login/#read

此外,还有几件事需要检查:确保您在 Facebook.com 上的应用配置正确,包括捆绑 ID。确保您尝试登录的用户拥有该应用的权限(如果该应用处于沙盒模式,请确保该用户已添加为测试人员并已批准此操作)。

【讨论】:

我将其更改为 publish_action。不过我没有运气。还有其他想法吗?捆绑包 ID 是正确的。我在沙盒和实时应用中都试过了。 您不能在该请求中使用publish_actionpublish_action 是一个 WRITE 权限,而您在那里使用的是 READ 权限。您需要完全删除该权限,并稍后在每个 SDK 的单独请求中执行此操作。 你是对的。我删除并且它起作用了(两天后尝试了一切)。所以谢谢。现在我有一个新问题。我曾经获得一个令牌,允许我从后端服务器写入时间线。我现在该怎么办???? 我曾经在登录后将令牌发送到服务器。我想我现在做不到。 您仍然可以这样做,但首先您需要在您的应用程序中执行第二个身份验证请求。您需要先从 Facebook SDK 执行 requestNewPublishPermissions 位,然后您将拥有一个完全有用的令牌。

以上是关于在 iOS 6 上 Facebook 登录失败的主要内容,如果未能解决你的问题,请参考以下文章

iOS 原生 Facebook 登录在 Mobile Safari 身份验证中失败

Facebook iOS SDK:使用 Facebook 登录失败

iOS Facebook 登录失败

iOS FBSDK 上的 Facebook 登录

Facebook SDK 登录永远不会在 iOS 9 上回调我的应用程序

iOS 6 facebook sdk 3.1.1 登录错误