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"
Вернуться на верх