2010-05-18 5 views
1

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

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

ответ

0

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

0

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

- (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

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

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

} 
Смежные вопросы