Evgenii Legotckoi
Evgenii Legotckoi27. Oktober 2018 19:36

Django - Tutorial 040. So fügen Sie die Authentifizierung über soziale Netzwerke hinzu. Facebook

Die Autorisierung auf der Website über Facebook wurde verschärft.

Gleichzeitig sammelte ich ein paar weitere Fallstricke.

Vor Facebook habe ich bereits die Autorisierung über das soziale Netzwerk VKontakte und Google vermasselt. Hier musste ich eine Seite mit Datenschutzrichtlinien erstellen, da Facebook diese Seite benötigt und auch eine Benutzervereinbarung erfordert, aber ich habe eine Seite mit Datenschutzrichtlinien bereitgestellt. Ich denke, dass ich mit dem Wachstum der Website eine vollwertige Seite mit Benutzervereinbarungen hinzufügen werde, obwohl nicht bekannt ist, wann dies sein wird. Die Regeln der Website sind jedoch ausreichend detailliert beschrieben.

Ich bin auch auf die strenge Anforderung gestoßen, dass die Website https haben muss. Im Allgemeinen, da ich https von Let`s Encrypt habe, dachte ich nicht, dass es ein Problem geben würde, aber Wie sich herausstellte, generiert django-social-auth standardmäßig eine Rücksendeadresse mit dem HTTP-Protokoll, und um HTTPS zu verwenden, müssen Sie dies in den Einstellungen angeben.

Nun wollen wir sehen, wie es gemacht wird.


Anwendungsregistrierung

Um die Authentifizierung zu verwenden, müssen Sie die Anwendung registrieren. Ich werde nicht auf die grundlegenden Details der Erstellung einer Anwendung eingehen. Aber ich werde die Haupteinstellungen der Anwendung angeben.

Sie erhalten eine App-ID und einen geheimen App-Schlüssel.

Geben Sie die Anwendungsdomäne sowie die URL der Datenschutzrichtlinie und die URL der Benutzervereinbarung an.

Geben Sie dann die URL an, um die Registrierung über OAuth umzuleiten.

settings.py

Lassen Sie uns die erforderlichen Einstellungen zur Datei settings.py hinzufügen.

Richten Sie die Anwendungs-ID und den geheimen Schlüssel ein. Und auch, was wir aus dem Benutzerprofil erhalten möchten. Ich brauche in diesem Stadium nur E-Mail.

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

Und geben Sie auch an, dass wir genau HTTPS verwenden möchten. Andernfalls wird Facebook schwören.

SOCIAL_AUTH_REDIRECT_IS_HTTPS = True

Geben Sie das Backend für die Authentifizierung an.

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

Nun, geben Sie die URL für die Authentifizierung an

<a href="{% url 'social:begin' 'facebook' %}">Facebook</a>
Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

AlexanderBardin
  • 19. März 2019 08:57

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

Evgenii Legotckoi
  • 20. März 2019 05:45

Добрый день.

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

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

АБ
  • 21. März 2019 05:35
  • (bearbeitet)

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

Evgenii Legotckoi
  • 21. März 2019 05:45

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

АБ
  • 21. März 2019 06:06

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

АБ
  • 21. März 2019 06:07

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

АБ
  • 21. März 2019 06:17

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

Evgenii Legotckoi
  • 21. März 2019 06:46

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

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

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

АБ
  • 21. März 2019 07:02
  • (bearbeitet)

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

Evgenii Legotckoi
  • 21. März 2019 07:04
  • (bearbeitet)

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

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

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

Evgenii Legotckoi
  • 21. März 2019 07:25

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

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

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

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

Evgenii Legotckoi
  • 21. März 2019 07:38

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

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

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

Evgenii Legotckoi
  • 21. März 2019 08:47

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

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

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

Evgenii Legotckoi
  • 21. März 2019 11:49

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

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

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

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken