Интеграция Facebook для мобильного приложения с использованием API REST для бэкэнд

Мы создаем мобильные приложения (iOS и Android), для которых требуется REST-интерфейс API и интеграция с Facebook для аутентификации.

Я все еще смущен тем, что является лучшим дизайном архитектуры для такого рода использования.

Главный вопрос: кто отвечает за аутентификацию / авторизацию с помощью Facebook, клиента или сервера?

Вариант A: Клиент аутентифицируется для FB. Клиент отправляет запросы, используя токен, полученный от Facebook. Сервер использует этот токен для идентификации пользователя.

Вариант B: Сервер аутентифицируется для FB в интересах клиента.

Дополнительные примечания (могут быть уместными или нет):

  • Я разрабатываю часть REST API с помощью Django.
  • Приложение будет нуждаться в доступе к друзьям пользователя Facebook, чтобы мы могли пригласить их использовать приложение.

Вы должны пойти с опцией А.

  • Аутентификация с клиентом. Затем вы получите токен доступа.
  • Отправьте этот токен на сервер.
  • Теперь вы можете создать пользователя, получить друзей FB и все, что вам может понадобиться.

Если вы используете django-rest-framework, вы должны взглянуть на пакет django-rest-auth. Он обрабатывает логин / создание пользователей на стороне сервера с помощью токена доступа.

https://django-rest-auth.readthedocs.org/en/latest/installation.html#social-authentication-optional

Вы можете взглянуть на SDK для Facebook на Python , он должен рассказать вам, как включить его в ваше приложение, и показывает, как интегрироваться с несколькими фреймворками здесь (Flask похож на django для этого).

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