Вход на наш сайт в рамках аутентификации FaceBook на iOS

Когда пользователь нажимает кнопку входа через Facebook на нашем веб-сайте, мы вызываем:

https://www.facebook.com/dialog/oauth?client_id=xxxxxxx&
redirect_uri=http://xxxxx.com/Account/FBLogin&scope=email,publish_stream 

Внутри нашего метода FBLogin (строковый код) мы делаем две вещи. Сначала мы звоним:

"https://graph.facebook.com/oauth/access_token?client_id=xxxxxxxxx&
redirect_uri=http://xxxxxx.com/Account/FBLogin&client_secret=xxxxxxxxxxxxx&code=" + code;

Затем, если вход в FaceBook прошел успешно, мы входим пользователя на наш сайт.

Что эквивалентно этому рабочему процессу в iOS? По сути, мы хотим аутентифицировать пользователя на наших серверах как часть аутентификации Facebook. Поэтому, когда аутентификация Facebook возвращается успешно, наш пользователь также входит в нашу систему.

Большое спасибо!


person Barka    schedule 10.08.2012    source источник


Ответы (1)


Если вы используете Facebook SDK для iOS, рабочий процесс SSO (единый вход) больше похож на рабочий процесс Javascript SDK, поскольку пользователю предоставляется то, что похоже на всплывающее окно JS SDK: либо в форме UIWebView, браузера Safari или приложения Facebook (в зависимости от настроек пользователя).

Одной из наиболее привлекательных функций iOS SDK является единый вход (SSO). SSO позволяет пользователям входить в ваше приложение, используя свою учетную запись Facebook. Если они уже вошли в приложение Facebook для iOS на своем устройстве, им не нужно вводить имя пользователя и пароль. Кроме того, вы можете получить разрешение от пользователей на доступ к информации их профиля Facebook и социальному графику.

SSO в основном работает, перенаправляя пользователей в приложение Facebook на их устройствах. Поскольку пользователи уже вошли в Facebook, им не нужно будет вводить свое имя пользователя и пароль для идентификации. Они увидят диалоговое окно аутентификации с разрешениями, запрошенными вашим приложением, и будут перенаправлены в ваше мобильное приложение с соответствующим access_token.

Разработчики должны знать, что Facebook SSO будет вести себя немного по-разному в зависимости от того, что установлено на устройстве пользователя. Вот что происходит в некоторых конфигурациях iOS:

  • Если приложение работает в версии iOS, поддерживающей многозадачность, и если на устройстве установлено приложение Facebook версии 3.2.3 или более поздней, SDK пытается открыть диалоговое окно аутентификации в приложении Facebook. После того, как пользователь предоставляет или отклоняет, приложение Facebook перенаправляет обратно в вызывающее приложение, передавая токен доступа, срок действия и любые другие параметры, которые может вернуть сервер Facebook OAuth.

  • Если приложение работает в версии iOS, поддерживающей многозадачность, но на устройстве не установлено приложение Facebook версии 3.2.3 или выше, SDK откроет диалоговое окно аутентификации в мобильном браузере Safari. После того, как пользователь предоставит или отзовет авторизацию, Safari перенаправит обратно в вызывающее приложение. Подобно авторизации на основе приложения Facebook, это позволяет нескольким приложениям совместно использовать один и тот же токен доступа пользователя Facebook через файл cookie Safari.

  • Если приложение работает в версии iOS, которая не поддерживает многозадачность, SDK использует старый механизм всплывающего встроенного UIWebView, предлагая пользователю войти в Facebook и предоставить доступ. FBSessionDelegate — это интерфейс обратного вызова, который должно реализовать ваше приложение: методы делегата будут вызываться, когда приложение успешно входит в систему или выходит из нее. Дополнительные сведения об этом делегате см. в документации по SDK для iOS.

... когда пользователь завершает вход или не входит в систему и возвращается в ваше приложение из «всплывающего окна», ваше приложение должно решить, что делать, в зависимости от того, вошел ли пользователь в систему/авторизовал приложение (и действительный получен токен доступа).

Пожалуйста, прочитайте это для получения дополнительной информации: https://developers.facebook.com/docs/mobile/ios/build/#implementsso

person Gil Birman    schedule 11.08.2012