Facebook Connect iPhone API注销不工作

Facebook Connect iPhone API注销不工作,iphone,objective-c,facebook,Iphone,Objective C,Facebook,我正在尝试在我正在开发的iPhone应用程序中编写Facebook集成。我已经很好地登录了它,但是我不喜欢这样的想法:能够打开一个功能而不能关闭它。因此,在开发注销功能时,我遇到了一个障碍 - (IBAction) logoutClicked:(id)sender { if (fbLoggedIn) { FBSession * mySession = [FBSession session]; [mySession logout]; } }

我正在尝试在我正在开发的iPhone应用程序中编写Facebook集成。我已经很好地登录了它,但是我不喜欢这样的想法:能够打开一个功能而不能关闭它。因此,在开发注销功能时,我遇到了一个障碍

- (IBAction) logoutClicked:(id)sender {
    if (fbLoggedIn)
    {
        FBSession * mySession = [FBSession session];

        [mySession logout];
    }
}

- (void)sessionDidLogout:(FBSession*)session
{
    NSLog(@"Session logged out.");
    [theLoginButton setTitle:@"Facebook Time!" forState:UIControlStateNormal];
    fbLoggedIn = FALSE;
    theLogoutButton.enabled = NO;
    theLogoutButton.alpha = 0;
}

logoutClicked方法响应我的xib中的一个按钮。未调用委托方法。我尝试将Facebook会话设置为ViewController中的属性,以便跨方法存储/访问数据,但这似乎也不起作用。有人有任何解决方案吗?

SessiondLogout是在实现FBSessionDelegate的类中实现的吗?
在使用[FBSession sessionForApplication:@XXX secret:@YYY delegate:delegate]方法创建会话时,它是作为委托传递的类的实例吗?

将此代码用于注销。我从这里得到这个

这对我很有用:

(void)logout {

//self.sessionDelegate = delegate;

appDelegate.facebook.accessToken = nil;
appDelegate.facebook.expirationDate  = nil;

NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]];

for (NSHTTPCookie* cookie in facebookCookies) {
    [cookies deleteCookie:cookie];
}


NSLog(@"Log out");
// Remove saved authorization information if it exists
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if ([userDefaults objectForKey:@"FBAccessTokenKey"]) {
    [userDefaults removeObjectForKey:@"FBAccessTokenKey"];
    [userDefaults removeObjectForKey:@"FBExpirationDateKey"];
    [userDefaults synchronize];
}
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];
    }
}

}
(void)logout {

//self.sessionDelegate = delegate;

appDelegate.facebook.accessToken = nil;
appDelegate.facebook.expirationDate  = nil;

NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]];

for (NSHTTPCookie* cookie in facebookCookies) {
    [cookies deleteCookie:cookie];
}


NSLog(@"Log out");
// Remove saved authorization information if it exists
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if ([userDefaults objectForKey:@"FBAccessTokenKey"]) {
    [userDefaults removeObjectForKey:@"FBAccessTokenKey"];
    [userDefaults removeObjectForKey:@"FBExpirationDateKey"];
    [userDefaults synchronize];
}
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];
    }
}

}