如果我们在调用 closeAndClearTokenInformation 之后调用 openWithBehavior,则会导致 EXC_BAD_ACCESS。无论是使用原生 iOS 内置对话框还是快速切换对话框之一。
我们第一次登录FB的代码:
if (![FBSession activeSession]) {
#ifdef FREE_APP
NSString* suffix = @"free";
#else
NSString* suffix = @"paid";
#endif
FBSession *session = [[[FBSession alloc] initWithAppID:@"111111111111111"
permissions:permissions
urlSchemeSuffix:suffix
tokenCacheStrategy:nil] autorelease];
[FBSession setActiveSession:session];
}
else if ([FBSession activeSession].isOpen)
[[FBSession activeSession] close];
[[FBSession activeSession] openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
我们的代码要注销,之后上面的代码在 openWithBehavior 之后失败:
[[FBSession activeSession] closeAndClearTokenInformation];
我最初使用的是 openActiveSessionWithReadPermissions 而不是 openWithBehavior,如 3.1 文档中所述,它不会崩溃,但从 FB 应用程序/Safari 切换回来的应用程序不起作用。也许是因为需要后缀?如果修复应用程序切换并返回最简单,请告知。
谢谢。