Django - Tutorial 040. How to add authentication through social networks. Facebook

Django, Facebook, Social

I added authorization on the site through Facebook.

At the same time collected a couple of pitfalls.

Before Facebook , I already added in authorization through the social network VKontakte and Google . And here I needed to create a privacy policy page, since Facebook requires this page and also requires a user agreement, but I provided a privacy policy page. I think that with the growth of the site I will add a full-fledged page of the user agreement, although it is unknown when it will be. However, the site rules are described in sufficient detail.

Also came across a strict need for https from the site. Generally, if you consider that I have https from Let`s Encrypt , I didn’t think that there would be any problem, but as it turned out, by default django-social-auth forms the return address with HTTP protocol, and for using HTTPS You need to specify this in the settings.

And now let's see how this is done.

Application registration

To use authentication, you need to register an application. I will not go into the basic details of creating an application. But I will indicate the main settings of the application.

You will receive the application ID and the application secret key.

Specify the application domain, as well as the privacy policy URL and the user agreement URL.


And then specify the url to redirect registration through OAuth.

settings.py

Add the necessary settings to the settings.py file.

Configure the application ID and secret key. And also that we want to receive from the user profile. I only need email at this stage.

SOCIAL_AUTH_FACEBOOK_KEY = 'XXXXXXXXX'
SOCIAL_AUTH_FACEBOOK_SECRET = 'XXXXXXXXX'
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']

And also indicate that we want to use HTTPS . Otherwise, Facebook will swear.

SOCIAL_AUTH_REDIRECT_IS_HTTPS = True

We specify the Backend for authentication.

AUTHENTICATION_BACKENDS = (
    ...
    'social_core.backends.facebook.FacebookOAuth2',
    ...
)

Well, we specify the url for authentication

<a href="{% url 'social:begin' 'facebook' %}">Facebook</a>

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
Support the author Donate

Добрый день. А проверить работоспособность локально как-то можно не указывая реальнй сайт (еще в разработке)

Добрый день.

Поппробуйте домен localhost, а url соответственно http://localhost

Возможно, потребуется указать порт. Например, так http://localhost:8000

AB

как быть с такой ошибкой: конечный uri не внесен в белый список в разделе Клиентские настройки OAuth?

FaceBook по умолчанию направляет на https, у вас видимо http протокол. Исправьте протокол в настройках.

AB

данная строчка у меня есть: SOCIAL_AUTH_REDIRECT_IS_HTTPS = True

AB

адрес сайта uri перенасправления пишу так: https://мойсайт.site/

AB

где брать действительный uri перенаправления?

Вы у себя urls прописывали?

urlpatterns = [
    ...
    path('', include('social_django.urls')),
]

В статье по настройке авторизации для ВКонтакте есть базовый мануал .

AB

Да, конечно VK работает, настраивал по вашему мануалу, а тут прям какойто ступор: https://amadowshop.site/auth/register/

Вы прописывали url в действительные uri перенаправления так?

https://amadowshop.site/complete/facebook/

AB

прописал, та же ошибка ...(((

ох тыж, как глубоко запихали авторизацию.

У вас по ходу такой url формируется

https://amadowshop.site/auth/verify/vk/oauth2/complete/facebook/

AB

да, спасибо, этот урл зарабтал, методом перебеора в итоге поймал ))) https://amadowshop.site/auth/verify/vk/oauth2/complete/facebook/

ну я просто глянул у вас страницу авторизации и обнаружил, что вы очень глубоко запихали include('social_django.urls')

А вообще, вот эта часть выглядит некрасиво в вашем url auth/verify/vk/oauth2/ . Наличие упоминания vk там вообще ни к чему

AB

url подкорректировал, но теперь ошибка и адрес сменился на https://amadowshop.site/auth/verify/login/facebook/

не вижу здесь проблемы, поменяйте url для callback в приложения oauth в социальных сетях

https://amadowshop.site/auth/verify/complete/facebook/

AB

а это где? сейчас ошибка в debag такая: Page not found (404) Request Method: GET Request URL: http://amadowshop.site/accounts/profile/

серьезно? Эта ошибка 404 уже даже не относится к данному вопросу.

В каких-то urls в вашем проекте.

Вопросы, которые не относятся непосредственно к статье, задавайте, пожалуйста на форуме . Оффтопы не нужно делать.

Comments

Only authorized users can post comments.
Please, Log in or Sign up
How to become an author?

Contribute to the evolution of the EVILEG community.

Learn how to become a site author.

Learn it
Donate

Good day, Dear Users!!!

I am Evgenii Legotckoi, developer of EVILEG. And it is my hobby project, which helps to learn programming another programmers and developers

If the site helped you, and you want also support the development of the site, than you can donate by following ways

PayPalYandex.Money
Timeweb

Let me recommend you the excellent hosting on which EVILEG is located.

For many years, Timeweb has been proving his stability.

For projects on Django I recommend VDS hosting

View Hosting Timeweb
n
June 5, 2020, 2:28 a.m.
n1k0m1

Qt - Test 001. Signals and slots

  • Result:0points,
  • Rating points-10
s
June 3, 2020, 1:56 a.m.
silo1995

C++ - Тест 003. Условия и циклы

  • Result:35points,
  • Rating points-10
AP
June 2, 2020, 9:11 p.m.
Aleksej Pikenin

C++ - Test 005. Structures and Classes

  • Result:75points,
  • Rating points2
Last comments
June 5, 2020, 10:52 a.m.
progammist

Распознавание изображений на Python с помощью TensorFlow и Keras

Огромное спасибо за метериал, по-больше бы подобных статей (с подробным описанием работы и примерами применения). Вопрос поразмышлять. На текущий момент реализовано немало технологий в осно…
June 5, 2020, 1:39 a.m.
Evgenij Legotskoj

Qt/C++ - Tutorial 091. How to write a custom delegate controlling the highlighting of a row in a table

По-моему, смысла в этом нет особого. Если делегат будет игнорировать настройки таблицы, то это приведёт ещё к большему непониманию, что вообще происходит, для программиста, который после вас буд…
June 5, 2020, 1:34 a.m.
IscanderChe

Qt/C++ - Tutorial 091. How to write a custom delegate controlling the highlighting of a row in a table

Сижу, размышляю: можно ли переписать делегата так, чтобы независимо от настроек строк выделялись строки?
June 5, 2020, 1:31 a.m.
Evgenij Legotskoj

Qt/C++ - Tutorial 091. How to write a custom delegate controlling the highlighting of a row in a table

Понятно. Я не обратил внимания на то, что там было в старом коде по настройкам строк :)
June 5, 2020, 1:27 a.m.
IscanderChe

Qt/C++ - Tutorial 091. How to write a custom delegate controlling the highlighting of a row in a table

Разобрался. У вас изначально в проекте были вот эти настройки: ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);ui->tableView->setSelectionMode(QAbstractItemVie…
Now discuss on the forum
June 5, 2020, 6:13 a.m.
IscanderChe

Фильтр для QtableView sql

Добрый день. Для такой фильтрации необходимо использовать QSortFilterProxyModel. В оффдоках есть хороший пример.
MA
June 4, 2020, 2:46 a.m.
Mihail A

Qt- C++ QTableView подсветить строку

Спасибо.
f
June 3, 2020, 1:49 a.m.
fryn3

Можно ли сделать в QML таблицу как в Excel?

edi-tableview - нашел пока такое выглядит коряво, посмотрим что можно сделать
June 2, 2020, 2:46 a.m.
Evgenij Legotskoj

Медиа файлы Google Firebase

Картинки можете попробовать сжимать через QPixmap, там есть возможность установки scaleFactor, через него можете устанавливать нужные параметры. А что касается конвертации видео, то лучше п…
June 2, 2020, 2:01 a.m.
Evgenij Legotskoj

Перехват обращения к локальным файлам QWebEngineView

В вашем случае вполне адекватное решение. Так сказать меньше зло. В противном случае пришлось бы очень много переписывать и перепиливать.
About
Services
© EVILEG 2015-2020
Recommend hosting TIMEWEB