2010-12-02 3 views
2

Я создаю базовое приложение для школы, которое получает некоторую информацию из facebook с помощью facebook-ios-sdk. Однако, когда я выхожу из приложения, он не дает мне возможность снова войти в систему, даже в демо-версии от facebook. Я проверяю, действительно ли сеансы действительны, и он всегда выводится неверно. Это еще одна проблема. Вот код, который у меня есть. Любая помощь приветствуется.facebook-ios-sdk logout

- (void)viewDidLoad { 
     _facebook = [[Facebook alloc] init]; 

     if ([_facebook isSessionValid] == NO) { 
     //show proper buttons for login 
     loginButton.hidden = NO; 
     logoutButton.hidden = YES; 
     } 

    else { 
    //show proper buttons for logout 
     loginButton.hidden = YES; 
     logoutButton.hidden = NO; 
    } 
    } 

То есть, чтобы проверить, вошел ли я в систему или нет. Затем у меня есть соответствующие кнопки, но код выше всегда возвращает, что сеанс недействителен. Вот функции Звоню войти или вне:

- (void)login { 
    [_facebook authorize:kAppId permissions:_permissions delegate:self]; 
} 

/** 
* Invalidate the access token and clear the cookie. 
*/ 
- (void)logout { 
    [_facebook logout:self]; 
} 
+0

Пожалуйста, уберите свой пост, это не так читаемо. – LordT 2010-12-02 17:23:22

ответ

6

Объект facebook говорит, что это не имеет никакого действительного сеанса, поскольку его маркер доступа и/или EXPIRATIONDATE равны нулю. Вероятно, это потому, что оно не сохраняется. Вероятно, вам необходимо записать accessToken и expirationDate, обработав логин в методе fbDidLogin FBSessionDelegate.

- (void)fbDidLogin { 
    [[NSUserDefaults standardUserDefaults] setValue: _facebook.accessToken forKey: @"access_token"]; 
    [[NSUserDefaults standardUserDefaults] setValue: _facebook.expirationDate forKey: @"expiration_date"]; 
} 

Используйте NSUserDefaults, например, чтобы сохранить эти значения на устройстве. Затем, каждый раз, когда вы назначаете и запускаете свой объект _facebook, немедленно устанавливайте accessToken и expirationDate значения, которые вы сохранили в NSUserDefaults.

Это должно исправить объект facebook, говорящий isSessionValid = NO всегда. Что касается другой проблемы, у меня такой же :(