social-auth-app-django Состояние бэкенда в Facebook с помощью redirect_uri
Я знаю, что мой вопрос звучит как дубликат, но я искал везде, не находя никакого решения.
Я работаю над реализацией социальных логинов для моего веб-приложения 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 моего приложения продолжает посылать переменную состояния, и я понятия не имею, почему это так. Пожалуйста, кто-нибудь еще сталкивался с этим странным поведением, и если да, то как вы справились с этим?
2 ответа
Я потратил часы на эту проблему, но оказалось, что мне нужно было только сделать это Valid OAuth Redirect URIs
установлен в https://www.domain.ext/social/complete/facebook/
Обратите внимание www.
Вы пробовали Джанго Аллаута? Я считаю, что это гораздо лучшее решение. Он заботится о интеграции сторонних поставщиков для вас со встроенной поддержкой многих поставщиков и пользовательских поставщиков.