2013-08-23 4 views
1

Я используюFacebook IOS SDK - открыть сеанс и запрос разрешения на чтение

(void)openWithBehavior:(FBSessionLoginBehavior)behavior completionHandler:(FBSessionStateHandler)handler 

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

(void)requestNewReadPermissions:(NSArray*)readPermissions completionHandler:(FBSessionRequestPermissionResultHandler)handler 

Это прекрасно работает, но для пользователей, подписывающих через Mobile Safari (или вероятно приложение Facebook IOS, не проверял), пользователи получают прыгнула вперед и назад дважды (нажмите «Войти» в моем приложении, перейдите в «Мобильное Safari», войдите в систему, перейдите в мое приложение, вернитесь в Mobile Safari, подтвердите разрешения, вернитесь к моему приложению.

Возвращающиеся пользователи - те, кто выходил из системы моего приложения (и токена удалены), также получите двойной прыжок - каждый раз, когда Mobile Safari сообщает пользователю, что они уже одобрили приложение.

Я - ng openWithBehavior, потому что я назначаю приоритет для собственного входа в систему iOS, используя FBSessionLoginBehaviorUseSystemAccountIfPresent. Я не вижу версию этого в сочетании с первоначальным запросом разрешений (например, openActiveSessionWithReadPermissions...).

Я надеялся, что для последующих логинов разрешения будут уже известны через session.permissions, но при тестировании это значение равно null, пока не вызывается requestNewReadPermissions.

Можно ли удалить двойной прыжок из одного или обоих сценариев (первый пользовательский логин, последующий вход пользователя), но все же достичь тех же разрешений?

ответ

3

Вы можете «запустить» свою сессию с разрешениями на чтение, вызвав метод initWithPermissions:. Затем вызовите openWithBehavior: completeHandler: он будет выполнять только один открытый вызов с уже установленными разрешениями.

+0

Отлично! Я пропустил это в заголовках. Благодаря! –

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