Я знаю, что мой вопрос звучит как дубликат, но я искал повсюду, не найдя никакого решения.
Я работаю над реализацией социальных логинов для моего веб-приложения django. До сих пор логины Google, Twitter и Yahoo работали, как и ожидалось. Но фейсбук всегда выдает ошибку ниже:
URL заблокирован: это перенаправление не удалось, потому что URI перенаправления не занесен в белый список в настройках OAuth клиента приложения. Убедитесь, что клиентский и веб-входы OAuth включены, и добавьте все домены вашего приложения в качестве допустимых URI перенаправления OAuth.
После некоторых копаний я узнал, как правильно настроить мою учетную запись на Facebook: настройки приложения Facebook ниже
App Domains
установлено на domain.ext
Site URL
установлено на https://www.domain.ext/
Valid OAuth Redirect URIs
установлено на https://domain.ext/social/complete/facebook/
Я также посмотрел URL-адрес перенаправления (показанный ниже) и обнаружил, что он содержит переменную state
, state=kMQH3TdKSdF8oYGGx7Xri4KgFaEQ9OyU
. Полный URL ниже
https://www.facebook.com/v2.9/dialog/oauth?client_id=977674249054153&redirect_uri=https%3A%2F%2Fwww.domain.ext%2Fsocial%2Fcomplete%2Ffacebook%2F&state=kMQH3TdKSdF8oYGGx7Xri4KgFaEQ9OyU&return_scopes=true&scope=email%2Cpublic_profile
Мой логин для входа в Facebook в моем приложении django {% url 'social:begin' 'facebook' %}
, и у меня есть 'social_core.backends.facebook.FacebookOAuth2'
в AUTHENTICATION_BACKENDS
Я искал и обнаружил, что на странице social-core
github уже есть такая проблема, которая была решена. В нем говорится, что начиная с v1.7.0 эта строка REDIRECT_STATE = False
была добавлена в бэкэнд Facebook Я копался в исходном коде и обнаружил, что это так. Но URL моего приложения продолжает посылать переменную состояния, и я понятия не имею, почему это так. Пожалуйста, кто-нибудь еще сталкивался с этим странным поведением, и если да, то как вы справились с этим?