Django Rest Framework OAuth2 Access Token Guidance Required

Я пытаюсь реализовать OAuth и jwt token login в Django Rest Framework для практики. Я использую social-auth-app-django и djangorestframework_simplejwt. Я использую базовую документацию и успешно создал пользователя с помощью GitHub (проверил это в Django Admin), а также создал пользователя с помощью Simple CreateAPIView.

Для входа в систему я могу использовать простой jwt для входа и получения маркера доступа для вызова других аутентифицированных API, но как я могу сделать то же самое, используя учетную запись пользователя, вошедшего в систему OAuth.

Другая проблема, с которой я столкнулся, заключается в том, что всякий раз, когда я посещаю http://localhost:8000/api/auth/login/github/ в браузере, он предлагает мне экран входа в систему, после входа он перенаправляет меня на http://localhost:8000/api/auth/complete/, который возвращает 404, потому что это не правильная конечная точка в соответствии со стандартной страницей ошибки Django. Она представляет api/auth/complete/<str:backend>/ [name='complete'] как одну из доступных конечных точек. Когда я посещаю /api/auth/complete/github/, появляется ошибка AuthMissingParameter at /api/auth/complete/github/. Я понятия не имею, что происходит.

Мои settings.py конфигурации следующие:

INSTALLED_APPS = [
    ---
    # Plugins
    "rest_framework",
    "corsheaders",
    "oauth2_provider",
    "social_django",
    "rest_framework_social_oauth2",
    ---
]
REST_FRAMEWORK = {
    "DEFAULT_AUTHENTICATION_CLASSES": (
        "oauth2_provider.contrib.rest_framework.OAuth2Authentication",
        "rest_framework_social_oauth2.authentication.SocialAuthentication",
        "rest_framework_simplejwt.authentication.JWTAuthentication",
    ),
}

AUTHENTICATION_BACKENDS = (
    "rest_framework_social_oauth2.backends.DjangoOAuth2",
    "django.contrib.auth.backends.ModelBackend",
    "social_core.backends.github.GithubOAuth2",
    "social_core.backends.spotify.SpotifyOAuth2",
    "django.contrib.auth.backends.ModelBackend",
)
Вернуться на верх