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

Facebook注销无法通过Facebook Connect iPhone API正常工作,iphone,ios,facebook,ipad,Iphone,Ios,Facebook,Ipad,我正在执行以下代码从iPhone应用程序注销Facebook: if ([mFacebook isSessionValid]) { [mFacebook logout]; } 此代码成功运行,并在此之后调用委托,其中我正在清除访问令牌: - (void)fbDidLogout { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults removeObjectForKey:

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

if ([mFacebook isSessionValid]) {
    [mFacebook logout];
}
此代码成功运行,并在此之后调用委托,其中我正在清除访问令牌:

- (void)fbDidLogout 
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults removeObjectForKey:@"FBAccessTokenKey"];
    [defaults removeObjectForKey:@"FBExpirationDateKey"];
    [defaults synchronize];
}
但当我再次登录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创建一个实例。

尝试以下代码:

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

只需将这一行添加到fbdilogout方法中即可

[mFacebook invalidateSession];

这肯定会让你从Facebook注销。

只需将这一行添加到fbDidLogout方法中即可

[mFacebook invalidateSession];

这肯定会使您从Facebook注销。

您是否使用FB mobile登录对话框?在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];
    }

  ...
}

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

  ...
}

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

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

尝试在FBD注销块的末尾添加这些令牌:

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.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];
    }
}

这些方法是否被调用?您在哪里为注销按钮编写了代码?是的,这些方法被成功调用,但当我登录时,我没有被要求输入用户名和密码。它直接表示您以“SampleName”身份登录。理想情况下,它应该询问用户名和密码。如果我卸载应用程序,它会要求提供凭据。如果你可以粘贴你的所有facebook集成代码,效果会更好。这些方法是否被调用?你在哪里为注销按钮编写了代码?是的,这些方法被成功调用,但当我登录时,我不会被要求提供用户名和密码。它直接表示您以“SampleName”身份登录。理想情况下,它应该询问用户名和密码。如果我卸载应用程序,它会要求提供凭据。如果你可以粘贴你的facebook集成的所有代码,效果会更好。很抱歉,你提到的代码与我在问题中编写的代码相同。你的会话没有失效。这就是问题所在。你是否在ViewController中添加了FBSessionDelegate?实际上是在我第一次安装应用程序时我调用下面的应用程序代码[mFacebook authorize:mArrayFBPermissions];这段代码首先显示safari中的登录页面,然后显示权限页面。但是如果在登录后注销,那么它只会在safari中打开权限页面。哦……那么我认为你的safari会为facebook存储会话。如果您在没有safari Auth的情况下尝试它,那么您可能会让它工作。很抱歉,您提到的代码与我在问题中编写的代码相同。您的会话没有失效。这就是问题所在。您是否在ViewController中添加了FBSessionDelegate?实际上,当我第一次安装应用程序时,我调用了以下代码[mFacebook authorize:mArrayFBPermissions];此代码首先在safari中显示登录页面,然后显示权限页面。但是如果在登录后注销,则只会在safari中打开权限页面。哦……那么我认为您的safari会为facebook存储会话。如果您在没有safari Auth的情况下尝试,则可能会成功。