В помощь мобильному разработчику
Azure Facebook

Нативная  Facebook авторизация с помощью службы приложений Azure

Александр Алексеев

Авторизация является  основой основ практически для всех современных мобильных приложений, но получить права на неё достаточно сложно. В прошлом  использование известных автору методов стало плохой практикой, хоть и позволяло быстро  загружать приложения в магазины приложений. Самым распространенным из замеченных подходом  при авторизации мобильных приложений с помощью Azure было применение волшебной строки:

Несмотря на то, что данный подход — самый простой способ авторизации  пользователей, вскоре становится понятно, что в нем есть ограничения, что делает его неподходящим для выпускаемых приложений. Этот подход хорош тем, что он кроссплатформенен и не нужно лезть из кожи вон для конфигурации. Можно авторизовать приложение за пару минут с помощью одной строки кода. Главное ограничение данного подхода — невозможность авторизации приложения в различных вариантах  backend’а. Это означает, что нельзя протестировать приложение в промежуточной версии  backend’а, возможно это сделать только в среде выпуска приложения. Чтобы избежать этого, необходимо оптимизировать авторизацию приложения с помощью нативного SDK поставщика авторизации, и далее передать токен доступа в  backend, чтоб пройти верификацию в нем.

 

Зачем использовать нативные  SDK?

Нативные  SDK раскрывают огромное количество функций для приложения. Рассмотрим  Facebook компонент для iOS. Он позволяет быстро авторизовать пользователя переключением на нативное приложение в  iOS 9 или предыдущих версиях.  IOS 10 уже использует  SafariViewController, позволяющий использовать файлы  cookies, чтобы найти существующий токен пользователя. Также можно запросить больше сведений о пользователе, чтобы создать собственный объект пользователя для использовании в приложении, такого как список друзей или интересов.

 

Регистрация для авторизации через  Facebook

Прежде чем станет возможным настроить  приложение для доступа к  авторизации пользователей через социальную сеть, нужно зарегистрироваться у поставщика авторизации. При использовании  Facebook нужно перейти на страницу разработчиков этой соцсети и создать новое приложение Facebook. Создав новое приложение, разработчик получает уникальный  App ID. Далее необходимо проверить работоспособность  URL адреса. Если используется служба приложений  Azure, то  URL адрес будет выглядеть следующим образом:

 

Начало работы

Как вариант можно использовать Facebook SDK для iOS, доступный для загрузки с NuGet. Это  Xamarin. Привязка  iOS к официальному  SDK обеспечена  Facebook, что позволяет применять все возможности  Objective-C и Swift.

Facebook component

 

Конфигурация приложения

Для работы с  Facebook SDK для iOS нужно обновить класс  AppDelegate, чтобы включить некоторые опции конфигурации для  Facebook. Далее необходимо предоставить уникальные  AppId и  App Name и убедиться, что обеспечены следующие пространства имен:

 

Когда пространства имен обозначены, необходимо ввести учетные данные в  SDK.

 

Далее нужно скорректировать класс  Keys с помощью FacebookAppId.

 

Info.plist

Если планируется поддержка iOS 9 или последующих версий, необходимо убедиться, что серверы  Facebook внесены в белый список. Такая необходимость возникла из-за того, что в  iOS 9 введена технология App Transport Security, обязующая все приложения использовать технологию  HTTPS для надежного соединения, чтобы повысить безопасность и приватность. Для того, чтобы внести серверы  Facebook в белый список, необходимо отредактировать файл приложения Info.plist, добавив следующее:

 

При авторизации переключение приложений также вызывает необходимость редактирования файла  Info.plist. Нужно добавить Facebook строки по порядку для метода CanOpenUrl.

 

Авторизация с помощью Facebook

Итак, проект сконфигурирован для использования авторизации через  Facebook. Далее нужно запустить авторизацию пользователей в  SDK. На страничке Bait News автор взял кнопку контроля  Facebook Login, которая запускает лог в процессе.

Xamarin iOS Storyboard

Для того, чтобы  Storyboard хорошо смотрелся во время дизайна  пользовательского интерфейса, автор разместил временную кнопку. Во время выполнения она будет скрыта и заменится пользовательскими элементами управления  Facebook. Сделано это в методе  ViewDidLoad в  SignIn ViewController.

Facebook Auth Screenshot

 

Завершение авторизации

 

Авторизовав пользователя с помощью  Facebook, можно передать токен доступа Facebook в службу приложений Azure, чтобы авторизация прошла также через  backend приложения. Во время этого происходит возврат к MobileServiceUser, где содержится новый токен, уникальный для  backend’а службы приложений. Стоит отметить, что данный токен не тот же токен  Facebook, что был передан.

 

Заключение

Где это достижимо, разработчики пытаются избежать в приложениях поддержки авторизации. Если возможно переложить эту работу на доверенную третью сторону, такую как  Microsoft, Facebook или Google, это нужно сделать. С помощью третьих сторон можно использовать  SDK, которые предоставляют гораздо больший функционал чем просто авторизация.  SDK позволяют обновлять токены безопасности или обеспечить нативный пользовательский интерфейс для распространенных ситуаций вроде обмена контентом.

Если есть заинтересованность в более глубоком изучении метода авторизации с помощью  Azure, настоятельно рекомендуется к прочтению электронная книга Эдриана Холла (Adrian Hall). В ней есть подробное руководство по авторизации с помощью всех поставщиков авторизации через социальные сети, а также по методу Active Directory.

Автор: Mike James
ИсточникОфициальный блог Xamarin

Александр Алексеев
Александр Алексеев

Xamarin - разработчик. Работаю с .NET платформой с 2012 года, программирую в основном с использованием C#. За это время успел поработать с ASP.NET, Entity Framework, MSSQL, Git

Admob Android
Sing In With Google

Написать ответ