Facebook注销无法通过Facebook Connect iPhone API正常工作

时间:2012-03-28 05:34:55

标签: iphone ios facebook ipad

我正在执行以下代码以从我的iPhone应用程序注销Facebook:

if ([mFacebook isSessionValid]) {
    [mFacebook logout];
}

此代码成功运行,并在此之后调用委托,我将清除访问令牌:

- (void)fbDidLogout 
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults removeObjectForKey:@"FBAccessTokenKey"];
    [defaults removeObjectForKey:@"FBExpirationDateKey"];
    [defaults synchronize];
}

但是当我再次登录Facebook时,它不会要求输入用户名和密码。

我做错了什么?

5 个答案:

答案 0 :(得分:4)

您使用的是FB移动登录对话框吗?在Facebook.m中,添加以下代码以删除m.facebook.com域中的cookie。

- (void)invalidateSession {

   ...
    NSArray* facebookMCookies = [cookies cookiesForURL:
                                [NSURL URLWithString:@"https://m.facebook.com"]];

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

  ...
}

答案 1 :(得分:2)

尝试在fbDidLogout块的末尾添加这些:

mFacebook.accessToken = nil;
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];
    }
}

答案 2 :(得分:0)

试试这段代码:

- (void) fbDidLogout {
    // Remove saved authorization information if it exists
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"]) {
        [defaults removeObjectForKey:@"FBAccessTokenKey"];
        [defaults removeObjectForKey:@"FBExpirationDateKey"];
        [defaults synchronize];
    }
}

不要忘记在AppDelegate中为facebook.h创建一个实例。

答案 3 :(得分:0)

只需将此行添加到 fbDidLogout 方法

即可
[mFacebook invalidateSession];

这肯定会让你从Facebook退出。

答案 4 :(得分:0)

尝试从Facebook应用程序注销。它可能只是从Facebook应用程序中获取令牌。