我呼叫:
[[FacebookRequests sharedInstance] facebookLogout];
包含什么:
[FBSession.activeSession close];
[FBSession.activeSession closeAndClearTokenInformation];
FBSession.activeSession = nil;
出现错误,但我退出了Facebook,这是错误的?
Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0x10a441660 {com.facebook.sdk:HTTPStatusCode=400, com.facebook.sdk:ParsedJSONResponseKey={
body = {
error = {
code = 2500;
message = "An active access token must be used to query information about the current user.";
type = OAuthException;
};
};
code = 400;
}}
更新
我修复了它,在我的
之后 [FBSession.activeSession close];
[FBSession.activeSession closeAndClearTokenInformation];
FBSession.activeSession = nil;
从block ^(fbsession *session,fbsessionstate state,nserror *error)自动称为Facebooklogin的一部分,它试图获取我仍然没有主动分配的信息,所以我添加了'if(fbsession.activesession.isopen)'和错误不再出现
- (void)facebookLogin
{
if (FBSession.activeSession.state == FBSessionStateOpen
|| FBSession.activeSession.state == FBSessionStateOpenTokenExtended)
{
NSLog(@"fb session opened");
} else {
[FBSession openActiveSessionWithReadPermissions:@[@"basic_info", @"user_birthday", @"email"]
allowLoginUI:YES
completionHandler:
^(FBSession *session, FBSessionState state, NSError *error) {
if (error) {
NSLog(@"%@", error.description);
}
if (FBSession.activeSession.isOpen) {
[self getPermissions];
}
[self sessionStateChanged:session state:state error:error];
}];
}
}
删除所有cookie和缓存存储
更多信息登录教程
示例应用程序
-(void) faceBookLogout
{
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
NSString* domainName = [cookie domain];
NSRange domainRange = [domainName rangeOfString:@"facebook"];
if(domainRange.length > 0)
{
[storage deleteCookie:cookie];
}
}
}