2012-08-09 4 views
0

현재 새로운 Facebook SDK를 사용하고 있으며 매우 이상한 문제가 있습니다. 나는 FacebookExplorerTableViewController라는의 ViewController를 가지고 내있는 viewDidLoad에서 나는 다음 코드 조각이 :Facebook sdk iOS 로그 아웃 오류

if(appDelegate.session.isOpen) 
    { 
     [self receiveAlbums]; 
    } 
    else 
    { 
     appDelegate.session = [[FBSession alloc] init]; 

     appDelegate.session = [FBSession sessionOpenWithPermissions:nil completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { 
      NSLog(@"opened session"); 
      if(!error) [self receiveAlbums]; 
      else NSLog(@"error: %@",error); 
     }]; 
} 

나는 그것을 실행 해요, 다의 벌금을. 그러나, 나는 내가있는 옵션이 SharingSettingsTableViewController라는 이름의 또 다른의 ViewController가 로그 아웃 할 수 있습니다

[appDelegate.session closeAndClearTokenInformation]; 

내가 로그 아웃하기 위해 노력하고있어, 나는 엑스 코드 충돌 얻을 :

2012-08-09 21:29:19.683 My Albums[2197:17903] opened session 
2012-08-09 21:29:19.684 My Albums[2197:17903] requesting albums 
2012-08-09 21:29:19.695 My Albums[2197:17903] access token: (null) 
2012-08-09 21:29:19.697 My Albums[2197:17903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]' 
*** First throw call stack: 
(0x1b6d022 0x1f56cd6 0x1aac7db 0x1ac4e86 0x757a5 0x754f4 0xa17e2 0x9ef39 0x676f9 0x92c3f1 0x1b6ee99 0x55514e 0x5550e6 0x5fbade 0x5fbfa7 0x5fb266 0x57a3c0 0x57a5e6 0x560dc4 0x554634 0x232eef5 0x1b41195 0x1aa5ff2 0x1aa48da 0x1aa3d84 0x1aa3c9b 0x232d7d8 0x232d88a 0x552626 0x21ed 0x2155) 
terminate called throwing an exception 

실행하는 것을 내 다시 완성 블록! 콘솔의 '요청하는 앨범'은 receiveAlbums의 호출에서 나옵니다.

왜이 완료 블록이 다시 실행됩니까? 설정보기 컨트롤러로 갈 때 이미 FacebookExplorerTableViewController를 할당 해제했습니다! 이 프로그램을 어떻게 실행할 수 있으며 오류를 없애려면 어떻게해야합니까? :)

미리 감사드립니다.

+0

은 FB SDK API 설정이 전부입니까? 더 많은 코드가 필요하며 액세스 토큰이나 만료 날짜를 설정하지 않았습니다. – MCKapur

답변

4

동일한 문제가있었습니다. 내 문제는 NSDictionary에 전달하여 [FBSession activeSession].accessToken을 유지하고 있었다. 가장 쉬운 해결책은 [FBSession activeSession].accessToken 스트레이트 대신 [NSString stringWithFormat:@"%@", [FBSession activeSession].accessToken]을 전달하는 것이 었습니다.

+0

답변 해 주셔서 감사합니다. 세션이 완료 블록에서 열려 있는지 이미 확인 했으므로 작업 영역이 약간 있습니다. 나는 당신의 해결책을 시도하지 않았지만 같은 문제가있는 사람은 항상 이것을 사용할 수 있습니다;) – Devos50