2013-08-03 176 views
2

当我尝试使用Facebook iOS SDK登录时出现错误无法完成操作(com.facebook.sdk错误2)。Facebook登录失败iOS 6

会话的状态是: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

任何想法?请!

+0

我正在使用SDK的最新版本。 – Tony

+0

此外,该应用程序被允许(在设置/ Facebook上) – Tony

回答

2

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

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

+0

我将其更改为publish_action。虽然我没有运气。任何其他想法?包ID是正确的。我试着用沙盒中的应用程序和现场。 – Tony

+0

您不能在该请求中使用'publish_action' -'publish_action'是一个WRITE权限,并且您在那里使用READ权限。您需要完全删除该权限,然后在每个SDK的单独请求中执行此操作。 – garrettmurray

+0

你说得对。我删除,它的工作(两天后试图一切)。所以谢谢。现在我有一个新问题。我曾经获得一个令牌,允许我从后端服务器写入时间线。我现在怎么办? – Tony