Django allauth OSError: [Errno 99] Адрес недоступен
Я пытаюсь реализовать django-allauth и столкнулся с этой проблемой. Для этого проекта я также использую Docker. Когда я нажимаю "Sign up using VK", он перенаправляет меня на http://127.0.0.1:8000/accounts/vk/login/callback/?code=...random code...
с этой ошибкой. После повторного перехода на страницу регистрации и нажатия той же кнопки он успешно перенаправляет меня на страницу профиля, что означает, что пользователь был создан. Я не смог найти никаких решений с помощью Google, поэтому надеюсь, что вы сможете помочь.
Я не думаю, что это из-за плохой конфигурации, потому что я тестировал подобную конфигурацию на пустом проекте django, который не был контейнеризирован, и все работало правильно. Возможно, это потому, что внутри контейнера docker установлен venv.
Traceback:
settings.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
# Custom apps
'coreapp',
'crispy_forms',
'rest_framework',
'corsheaders',
'easy_thumbnails',
'django_cleanup',
'storages',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.vk',
]
SITE_ID = 1
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
SOCIALACCOUNT_PROVIDERS = {
"vk": {
"APP": {
"client_id": int(os.environ.get('VK_OAUTH2_ID')),
"secret": os.environ.get('VK_OAUTH2_SECRET'),
},
"SCOPE": {
"profile",
"email",
},
},
}
В шаблоне входа в систему я использовал:
{% load socialaccount %}
<a href="{% provider_login_url "vk" method="oauth2" %}"> Sign up using VK </a>
Dockerfile:
FROM python:3.9-alpine3.13
ENV PYTHONUNBUFFERED 1
COPY ./requirements.txt /requirements.txt
COPY ./placerem /placerem
COPY ./scripts /scripts
WORKDIR /placerem
# Installing npm packages
RUN apk add --update --no-cache nodejs npm && \
npm ci
RUN python -m venv /py && \
/py/bin/pip install --upgrade pip && \
apk add --update --no-cache postgresql-client && \
apk add --update --no-cache --virtual .tmp-deps \
build-base jpeg-dev postgresql-dev musl-dev linux-headers \
zlib-dev libffi-dev openssl-dev python3-dev cargo && \
apk add --update --no-cache libjpeg && \
/py/bin/pip install -r /requirements.txt && \
apk del .tmp-deps && \
adduser --disabled-password --no-create-home placerem && \
mkdir -p /vol/web/static && \
mkdir -p /vol/web/media && \
chown -R placerem:placerem /vol && \
# Or you'll get permission denied error
chown -R placerem:placerem /py/lib/python3.9/site-packages && \
chown -R placerem:placerem package.json && \
chmod -R +x /scripts
ENV PATH="/scripts:/py/bin:/py/lib:$PATH"
USER placerem
CMD ["run.sh"]
Я выяснил, что было не так.
Установка значения "none" решила эту проблему.
В файле settings.py добавьте:
ACCOUNT_EMAIL_VERIFICATION = "none"