2013-08-03 6 views
2

Facebook iOS SDK를 사용하여 로그인하려고 할 때 작업을 완료 할 수 없습니다 (com.facebook.sdk 오류 2).iOS 6에서 Facebook 로그인 실패

세션의 상태는 다음과 같습니다. 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

또한 앱이 허용됩니다 (On Settings/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'은 쓰기 권한이고 당신은 거기서 읽기 권한을 사용하고 있습니다. 해당 권한을 완전히 제거하고 나중에 SDK별로 별도의 요청을해야합니다. – garrettmurray

+0

당신 말이 맞아요. 나는 그것을 제거하고 2 일 후에 모든 것을 시도했다. 고맙습니다. 이제 새로운 문제가 생겼습니다. 백엔드 서버에서 타임 라인에 쓸 수있는 토큰을 얻곤했습니다. 어떻게하면됩니까? – Tony