2011-01-04 2 views
5

С новой библиотекой Facebook объект FBSession исчез. Как я могу проверить, имеет ли пользователь действительный сеанс на своем устройстве сразу же, когда он запускает приложение без подсказки для сафари или uiwebview?Check Facebook Connect Session on IOS

Метод [facebook isSessionValid] работает на acccessToken, но accessToken устанавливается, когда приложение возвращается с сафари (или встроенного uiwebview).

Можно ли проверить сеанс с помощью файлов cookie?

ответ

12

После успешного входа в систему, вы хотите, чтобы сохранить маркер доступа и дату истечения срока действия, например:

[[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"AccessToken"]; 
[[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"ExpirationDate"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

Затем, когда вы загрузите приложение, вы хотите проверить, если есть сохраненный маркер, как это:

_facebook = [[Facebook alloc] initWithAppId:@"[app_id]"]; 
_facebook.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"]; 
_facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"]; 
if (![_facebook isSessionValid]) { 
    [_facebook authorize:_permissions delegate:self]; 
} 
else { 
    [_facebook requestWithGraphPath:@"me" andDelegate:self]; 
} 

Надеюсь, это поможет!

+0

Да, я думаю, что это метод, который я приму, спасибо – MatterGoal

+0

Отлично работает. Однако есть утечка памяти в строке инициализации _facebook (нет необходимости сохранять). –

+0

Хорошая точка, Амир. Он был отредактирован! Спасибо – donkim

0

Я уверен, что он должен автоматически проверять, вошел ли пользователь в систему, через сафари или приложение для iPhone Facebook. Если пользователь не вошел в систему, он предложит использовать одно из вышеуказанных приложений (по умолчанию это сафари, если приложение FB не установлено, поэтому симулятор открывает FB в сафари).

+0

Спасибо, Дэнни Бой, да, это проверено через Safari ... но мне не нужно переходить из safari/uiwebView и т. Д., Чтобы проверить, зарегистрирован ли я. Пример: я вхожу в первый раз, используя сафари/uiwebview, я закрываю приложение, а не возвращаюсь к приложению. Мне бы хотелось, чтобы мой пользователь был автоматически распознан с его именем и фотографией facebook. – MatterGoal

+0

Сам объект Facebook проверяет, является ли пользователь во время входа в систему, используя [self isSessionValid] при попытке выполнить действие. Если пользователь не вошел в систему, он предпримет соответствующие действия для их регистрации. –

+0

Если посмотреть на код isSessionValid, я решил проверить свойство accessToken и время его истечения. Но это свойство настраивается только после действия входа (или действия быстрого запуска Safari/uiwebview/FBapp). Поэтому я не могу найти способ получить доступ к этой информации, не показывая хотя бы диалог FB. – MatterGoal