Как удалить промежуточные страницы при Django all auth Facebook login?
Я использую Django all-auth для включения социальных логинов Google & Facebook в мое приложение. Конфигурация выглядит следующим образом:
Настройки Django Allauth:
ACCOUNT_ALLOW_REGISTRATION = env.bool("DJANGO_ACCOUNT_ALLOW_REGISTRATION", True)
# https://django-allauth.readthedocs.io/en/latest/configuration.html
ACCOUNT_AUTHENTICATION_METHOD = "email"
# https://django-allauth.readthedocs.io/en/latest/configuration.html
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
# https://django-allauth.readthedocs.io/en/latest/configuration.html
ACCOUNT_EMAIL_VERIFICATION = "none"
# https://django-allauth.readthedocs.io/en/latest/configuration.html
ACCOUNT_ADAPTER = "streampala.users.adapters.AccountAdapter"
# https://django-allauth.readthedocs.io/en/latest/configuration.html
SOCIALACCOUNT_ADAPTER = "streampala.users.adapters.SocialAccountAdapter"
# https://django-allauth.readthedocs.io/en/latest/forms.html
ACCOUNT_FORMS = {
'login': 'allauth.account.forms.LoginForm',
'signup': 'users.forms.AdvertisersSignUpForm',
'add_email': 'allauth.account.forms.AddEmailForm',
'change_password': 'allauth.account.forms.ChangePasswordForm',
'set_password': 'allauth.account.forms.SetPasswordForm',
'reset_password': 'allauth.account.forms.ResetPasswordForm',
'reset_password_from_key': 'allauth.account.forms.ResetPasswordKeyForm',
'disconnect': 'allauth.socialaccount.forms.DisconnectForm',
}
SOCIALACCOUNT_PROVIDERS = {
"google": {
"SCOPE": [
"profile",
"email",
"https://www.googleapis.com/auth/youtube",
"https://www.googleapis.com/auth/youtube.readonly",
"https://www.googleapis.com/auth/youtube.upload",
"https://www.googleapis.com/auth/youtube.force-ssl",
],
"AUTH_PARAMS": {
"access_type": "offline",
},
},
"facebook":
{
'METHOD': 'oauth2',
'SCOPE': ['email', 'public_profile'],
'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
'INIT_PARAMS': {'cookie': True},
'FIELDS': [
'id',
'first_name',
'last_name',
'middle_name',
'name',
'name_format',
'picture',
'short_name'
],
'EXCHANGE_TOKEN': True,
'LOCALE_FUNC': lambda request: 'en_US',
'VERIFIED_EMAIL': False,
'VERSION': 'v7.0',
},
}
Вот что я вижу после нажатия на кнопку входа в Google/Facebook:

После завершения входа в Facebook появляется вот это:

Я не хочу ни одного из этих двух промежуточных экранов, и я также пытался изменить конфигурацию. Но эти экраны не упоминаются в документации Django All-Auth, так что я что-то упустил?
Попробуйте установить SOCIALACCOUNT_LOGIN_ON_GET в значение TRUE.
https://django-allauth.readthedocs.io/en/latest/release-notes.html#backwards-incompatible-changes-1
В docs не рекомендуется использовать SOCIALACCOUNT_LOGIN_ON_GET = True по соображениям безопасности. Вместо этого используйте форму для отправки запроса POST:
<form action="{% provider_login_url 'facebook' %}" method="post">
{% csrf_token %}
<button type="submit">Continue with Facebook</button>
</form>
Вам также необходимо установить SOCIALACCOUNT_AUTO_SIGNUP = True в settings.py (это значение по умолчанию).
Откройте файл setting.py проекта django и добавьте следующую строку в нижней части файла
SOCIALACCOUNT_LOGIN_ON_GET = True