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>
Добрый день. А проверить работоспособность локально как-то можно не указывая реальнй сайт (еще в разработке)
Добрый день.
Поппробуйте домен localhost, а url соответственно http://localhost
Возможно, потребуется указать порт. Например, так http://localhost:8000
как быть с такой ошибкой: конечный uri не внесен в белый список в разделе Клиентские настройки OAuth?
FaceBook по умолчанию направляет на https, у вас видимо http протокол. Исправьте протокол в настройках.
данная строчка у меня есть: SOCIAL_AUTH_REDIRECT_IS_HTTPS = True
адрес сайта uri перенасправления пишу так: https://мойсайт.site/
где брать действительный uri перенаправления?
Вы у себя urls прописывали?
В статье по настройке авторизации для ВКонтакте есть базовый мануал .
Да, конечно VK работает, настраивал по вашему мануалу, а тут прям какойто ступор: https://amadowshop.site/auth/register/
Вы прописывали url в действительные uri перенаправления так?
прописал, та же ошибка ...(((
ох тыж, как глубоко запихали авторизацию.
У вас по ходу такой url формируется
да, спасибо, этот урл зарабтал, методом перебеора в итоге поймал )))
https://amadowshop.site/auth/verify/vk/oauth2/complete/facebook/
ну я просто глянул у вас страницу авторизации и обнаружил, что вы очень глубоко запихали include('social_django.urls')
А вообще, вот эта часть выглядит некрасиво в вашем url auth/verify/vk/oauth2/ . Наличие упоминания vk там вообще ни к чему
url подкорректировал, но теперь ошибка и адрес сменился на https://amadowshop.site/auth/verify/login/facebook/
не вижу здесь проблемы, поменяйте url для callback в приложения oauth в социальных сетях
а это где? сейчас ошибка в debag такая:
Page not found (404)
Request Method: GET
Request URL: http://amadowshop.site/accounts/profile/
серьезно? Эта ошибка 404 уже даже не относится к данному вопросу.
В каких-то urls в вашем проекте.
Вопросы, которые не относятся непосредственно к статье, задавайте, пожалуйста на форуме . Оффтопы не нужно делать.