FBCподключиться, поделиться с веб-представлением? - PullRequest
4 голосов
/ 22 марта 2012

Я использую FBConnect в своем проекте iOS для авторизации пользователя (SSO).

После входа в систему мне иногда нужно открыть Webview для отображения пользовательских диалогов, таких как диалог запроса приложения.(пригласить в приложение) и даже открыть страницу профиля друга в веб-просмотре для просмотра пользователем моего приложения.

Проблема в том, что Webview не распознает вошедшего в систему пользователя и просит его снова войти в систему,это не очень дружелюбно.

Есть идеи, как поделиться авторизованным ключом авторизации / cookie / чем-то с веб-представлением?

Ответы [ 2 ]

5 голосов
/ 23 марта 2012

Скорее всего, вы столкнулись с этой ситуацией. Это действительно расстраивает.

Facebook iOS SDK не хранит файлы cookie для доступа

Вы можете, если хотите, заставить библиотеку iOS использовать ваше приложение для входа в систему и авторизоваться через UIWebview, локальный для вашего приложения. Таким образом, вы вошли в систему, и у вас есть куки для использования. Вам нужно будет добавить метод к существующему объекту Facebook. Обычно вы звоните:

- (void) authorize:(NSArray *)permissions 
          delegate:(id<FBSessionDelegate>)delegate

для авторизации, которая в свою очередь вызывает закрытый метод:

- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth
                    safariAuth:(BOOL)trySafariAuth

с обоими параметрами, установленными на ДА.

Вы хотите добавить открытый метод, который вызывает ту же самую частную функцию, но для обоих параметров установлено значение NO. Я добавил этот метод в Facebook.m и объявил его в Facebook.h, чтобы я мог вызывать его так, как мне нравится:

- (void)authorize:(NSArray *)permissions 
         tryFBApp:(BOOL) tryFBApp 
    trySafariAuth:(BOOL) trySafariAuth
         delegate:(id<FBSessionDelegate>)delegate {

    [_permissions release];
    _permissions = [permissions retain];

    _sessionDelegate = delegate;

    [self authorizeWithFBAppAuth:tryFBApp safariAuth:trySafariAuth];
}

Я называю это с двумя параметрами BOOL, установленными на NO, и библиотека открывает локальный UIWebView, который оставляет мне файлы cookie, которые работают для приложения.

0 голосов
/ 23 марта 2012

FBConnect возвращает вам токен, чтобы у вас был доступ к FB API, а не к веб-сайту FB. К сожалению, это не позволяет войти в систему через UIWebView и установить надлежащие файлы cookie FB.

Другой стратегией может быть изменение исходного кода FBConnect для перенаправления на ваш собственный UIWebView вместо стандартного всплывающего окна FB в процесс FB-APP и их входа в систему только один раз. Тем не менее, вам необходимо сохранить состояние файла cookie UIWebView.

Предлагаю вам также взглянуть на http://www.getsocialize.com, который поможет вам управлять интеграцией в социальные сети.

удачи!

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