Выход из Facebook не работает должным образом через Facebook Connect iPhone API - PullRequest
0 голосов
/ 28 марта 2012

Я выполняю следующий код для выхода из Facebook из моего приложения для iPhone:

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

Этот код успешно выполняется и после этого вызывается делегат, в котором я очищаю токен доступа:

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

Но когда я снова захожу в Facebook, он не запрашивает имя пользователя и пароль.

Что я делаю не так?

Ответы [ 5 ]

4 голосов
/ 01 июня 2012

Вы используете FB mobile Login Dialog? В Facebook.m добавьте следующий код для удаления файлов cookie в домене m.facebook.com.

- (void)invalidateSession {

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

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

  ...
}
2 голосов
/ 08 июня 2012

Попробуйте добавить их в конце вашего блока 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];
    }
}
0 голосов
/ 01 июня 2012

Попробуйте выйти из приложения Facebook. Он может просто взять токен из приложения Facebook.

0 голосов
/ 28 марта 2012

Просто добавьте эту строку в fbDidLogout method

[mFacebook invalidateSession];

Это, безусловно, заставит вас выйти из Facebook.

0 голосов
/ 28 марта 2012

Попробуйте этот код:

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

Не забудьте создать экземпляр для facebook.h в вашем AppDelegate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...