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



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

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

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

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

但当我再次登录Facebook时,它不会询问用户名和密码。

我做错了什么?

您正在使用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];
    }
  ...
}

尝试在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];
    }
}

只需将此行添加到fbDidLogout方法

[mFacebook invalidateSession];

这肯定会让你从Facebook注销。

试试这个代码:

- (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创建一个实例。

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

最新更新