Путаница с объектами сессии в Facebook Connect для iPhone - PullRequest
0 голосов
/ 09 февраля 2010

Я много читал документы на Facebook, но меня довольно смущает роль объекта сеанса. Например, с помощью метода:

session = [FBSession sessionForApplication:myApiKey secret:myAppSecret delegate:self];

Что я должен делать с объектом сеанса, который мне возвращают, когда, по-видимому, мне нужно дождаться ответного вызова делегата, чтобы что-то сделать?

Во-вторых ... при последующем исполнении моего приложения, когда пользователь разрешил мне доступ к своей учетной записи во время предыдущего выполнения, как я могу получить ссылку на объект сеанса, чтобы я мог подключиться к его учетной записи Facebook и опубликовать статус , так далее.? В документах упоминается [возобновление сеанса], но не говорится, откуда должна исходить эта ссылка на сеанс. (И вызов [[FBSession сеанс] возобновить] компилируется, но не работает.)

Спасибо.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2010

Что я должен делать с объектом сеанса, который мне возвращают, когда, по-видимому, мне нужно дождаться ответного вызова делегата, чтобы что-то сделать?

Вы должны создать и показать FBLoginDialog пользователю. Метод делегата не будет вызываться до тех пор, пока пользователь не войдет в систему. Он не имеет ничего общего с созданием экземпляра сеанса.

как получить ссылку на объект сеанса, чтобы я мог подключиться к его учетной записи Facebook

Библиотека Facebook Connect будет хранить информацию о сеансе по умолчанию в вашем приложении. Вам не нужно ничего делать, чтобы сохранить это. Насколько я понимаю, при каждом запуске вашего приложения вы должны создавать объект сеанса с +sessionForApplication:secret:delegate:, а затем вызывать [session resume]. Если библиотека FBConnect обнаружит действительный сеанс, сохраненный в пользовательских значениях по умолчанию, она вернет YES, и вы можете продолжить, поскольку пользователь теперь вошел в систему. Если resume возвращает NO, вам нужно будет отобразить диалоговое окно входа в систему.

Из Документы Facebook :

Информация о сеансе будет храниться на диске iPhone в настройках вашего приложения, поэтому вам не придется просить пользователя входить в систему каждый раз, когда он использует ваше приложение. После того как вы создали свой объект сеанса, вызовите [сеанс возобновить], чтобы возобновить предыдущий сеанс. Если сеанс истек или вы еще не создали сеанс, он вернет НЕТ, и вам придется попросить пользователя войти в систему. Сеансы истекают после двух часов бездействия.

1 голос
/ 10 февраля 2010

это действительно вытекает из ответа и комментариев Оле, поскольку все это есть. Это то, что я сделал.

Сначала создайте объект сеанса:

facebookSession = [[FBSession sessionForApplication:SESSION secret:SECRET delegate:self]retain];    
[facebookSession resume];

Вторая строка извлекает данные сеанса из файла настроек, чтобы вы вошли в систему, если пользователь указывает, что он хочет, чтобы он оставался в системе.

Вы должны реализовать метод:

- (void)session:(FBSession*)session didLogin:(FBUID)uid

хотя я ни для чего не использую.

Чтобы проверить, если пользователь уже вошел в систему, я звоню:

[[FBSession session] isConnected]

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

...