Общайтесь с Facebook в Django Rest Framework + Django Social Auth

Я использую Джанго-Социально-Двиг для подключения к проблеме facebook, и он работает идеально. Я разработал API для моего приложения django с Django Rest Framework. Но я смущен использованием Django Social Auth с Django Rest Framework для устройств ios. Я искал 1, 2, 3 и 4 но они, как правило, с угловым js. Я не знаком с разработкой ios.
Что отличается между facebook подключается к spa и мобильному устройству? Как я могу использовать эти пакеты вместе? Могу ли я перейти от django-social-auth к python-social-auth?

спасибо заранее

3 ответов


теперь вы можете аутентифицировать своих пользователей против вашей django-rest-framework с токенами на предъявителя / сторонними токенами доступа из любого Python-social-auth backend (Facebook, Google, Github и т. д.) используя эту библиотеку https://github.com/PhilipGarnero/django-rest-framework-social-oauth2

этот модуль обеспечивает поддержку python-social-auth и oauth2 для django-rest-framework. Таким образом, это экономит вам много времени на настройку того, что требуется для вашего DRF с social авторизация и что OAuth2 надежности.


Я думаю, что вы можете добиться этого, используя Джанго остальные рамки, django-rest-auth и allauth. Эти трое хорошо работают вместе.

  • С Джанго остальные рамки вы уже знакомы.
  • на allauth отвечает за социальную аутентификацию.
  • на django-rest-auth ответственный за создание RESTful api для социальной аутентификации, т. е. связь между django-rest-framework и allauth.

рекомендуется, чтобы вы позволяете python-social-auth обрабатывать логин Facebook для вас, и вместо этого вы используете другой плагин OAuth для Django Rest Framework для аутентификации с Django. Это имеет дополнительное преимущество также поддерживает вход не-Facebook через стандартную систему аутентификации Django.

Я смущен использованием социальной аутентификации Django с платформой Django Rest для устройств ios.

недавно ответил на аналогичный вопрос о реализации аутентификации с помощью python-social-auth и Django Rest Framework. Он включает в себя некоторые важные моменты, чтобы прочитать о реализации аутентификации с помощью третьей стороны вместе с некоторыми важными заметками о том, как вы не должны передавать сторонние токены OAuth вашему клиенту.

как я могу использовать эти пакеты вместе?

хотя в этом ответе конкретно упоминается использование OAuth в качестве метода аутентификации для API это позади python-social-auth, вы можете использовать другие методы аутентификации, которые внутренне используют систему аутентификации Django, например TokenAuthentication. В любом случае вы в конечном итоге будете проксировать аутентификацию между вашим приложением переднего плана и вашим сторонним поставщиком аутентификации, используя свой внутренний API.

чем отличается facebook connect от spa и мобильного устройства?

Facebook обеспечивает прямую интеграцию с некоторыми мобильными операционными системами, особенно iOS и Android. Это обходит ваш API для аутентификации и непосредственно аутентифицирует ваше мобильное приложение с помощью Facebook. В идеале это будет аутентификация вашего back end API вместо мобильного приложения. Это все еще может быть возможно сделать, если вы передадите токен доступа обратно в свой API вручную, по существу делая то же самое, что python-social-auth было бы неплохо, но это может быть рискованным и, возможно, не стоит дополнительных усилие.

Facebook Connect (теперь известный как просто Facebook Login) работает аналогично тому, как интеграция Facebook работает на мобильных устройствах. Одно отличие, которое может работать в вашу пользу, заключается в том, что очень легко перейти от входа в Facebook для одностраничных приложений к шаблону аутентификации на основе OAuth. Это описано в документации разработчиков Facebook как "ручное построение потока входа в систему" и совместим с библиотеками, которые поддерживают логин на основе OAuth, например python-social-auth.

могу ли я перейти с django-social-auth на python-social-auth?

это не должно быть проблемой, так как python-social-auth эффективно заменить django-social-auth.