Цель: Разрешить пользователю аутентификацию с помощью Facebook в приложении iOS, для которого требуется доступ к защищенной веб-службе, которую я запускаю.
Предположения: Существует собственная система аутентификации (и регистрации) для тех пользователей, которые предпочитают не использовать Facebook для входа.
Детали:
- Предположим, мы хотим предложить пользователю возможность входа в систему с помощью Facebook без создания отдельной учетной записи/учетных данных для нашей системы.
- Поскольку мы поддерживаем собственный собственный механизм auth (имя пользователя и пароль), у нас есть собственные идентификаторы пользователей и выдается токен аутентификации, который используется для последующих взаимодействий после первоначальной проверки достоверности.
Я удивлен, что у Facebook нет лучшей практики для этого в документации разработчиков. Вся существующая документация предполагает, что вы создаете FB auth на веб-сайте или автономное мобильное приложение без службы, требующей аутентификации.
Здесь мои первоначальные мысли о том, как это было бы разработано, но хотят проверить правильность его.
- Клиент выталкивает вход iOS в Facebook
- Пользовательский интерфейс подписывается с учетными данными Facebook и получает токен доступа.
- Приложение iOS передает токен доступа на наш сервер
-
Наш сервер разговаривает с API-интерфейсом FB, используя токен доступа, чтобы (a) проверить токен и (b) получить идентификатор пользователя FB для этого токена доступа.
например. Наш сервер будет вызывать https://graph.facebook.com/me/?access_token=XYZ, который будет возвращать информацию профиля в объекте JSON
-
Предполагая, что он действителен, наш сервер извлекает идентификатор пользователя из объекта JSON и проверяет, имеет ли пользователь уже учетную запись. Если это так, мы выдаем наш собственный билет авторизации клиенту для использования на этом сеансе. Если у пользователя нет учетной записи, мы создаем новую с идентификатором пользователя Facebook, присваиваем свой собственный уникальный идентификатор пользователя и выдаем наш авторизационный билет.
- Клиент затем передает аутентификационный билет обратно на последующие взаимодействия, требующие аутентификации.
Это похоже на правильный подход ко мне, но не уверен, что я пропустил что-то безумное, и спустился по неправильному (сложному) пути.