Facebook Connect iPhone API выход из системы не работает - PullRequest
1 голос
/ 18 мая 2010

Я пытаюсь написать интеграцию Facebook в приложении для iPhone, над которым я работаю. У меня все нормально, но мне не нравится идея включить функцию, не выключив ее. Итак, работая над функцией выхода из системы, я попал в ловушку.

- (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 для хранения / доступа к данным между методами, но это тоже не сработало У кого-нибудь есть решения?

Ответы [ 3 ]

0 голосов
/ 25 июня 2012

Поставьте этот код для выхода из системы. Я получил это по этой ссылке .

- (void) fbDidLogout {
    NSLog(@"Log out");
    // Remove saved authorization information if it exists
    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];
        }
    }
}
0 голосов
/ 25 ноября 2013

Это работает для меня:

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

}
0 голосов
/ 20 мая 2010

Реализован ли sessionDidLogout в классе, который реализует FBSessionDelegate? И является ли это экземпляром этого класса, который вы передали в качестве делегата при создании сеанса с методом [FBSession sessionForApplication: @ "XXX" secret: @ "YYY" делегат: (DELEGATE)]?

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