From 8104454d68f2579b696e63324703165fa2e84f06 Mon Sep 17 00:00:00 2001 From: Untone Date: Tue, 23 Sep 2025 22:07:06 +0300 Subject: [PATCH] slash-oauth-fix --- CHANGELOG.md | 3 +++ auth/oauth.py | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c65f7af8..b4faa659 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## [0.9.23] - 2025-09-23 +### Fixed +- 🔧 **OAuth Callback URL**: Исправлено формирование callback URL - добавлен отсутствующий слеш между доменом и путем + ### Changed - 🔄 **OAuth Routes**: Возвращены к стандартному формату `/oauth/{provider}` - провайдеры не передают параметр provider в callback diff --git a/auth/oauth.py b/auth/oauth.py index e5723207..e3e35634 100644 --- a/auth/oauth.py +++ b/auth/oauth.py @@ -407,8 +407,8 @@ async def oauth_login(_: None, _info: GraphQLResolveInfo, provider: str, callbac } await store_oauth_state(state, oauth_data) - # Используем URL из фронтенда для callback - для фронтенда - oauth_callback_uri = f"{callback_data['base_url']}oauth/{provider}/callback" + # Используем URL из фронтенда для callback - для фронтенда (добавляем слеш если его нет) + oauth_callback_uri = f"{callback_data['base_url'].rstrip('/')}/oauth/{provider}/callback" try: return await client.authorize_redirect( @@ -545,8 +545,8 @@ async def oauth_login_http(request: Request) -> JSONResponse | RedirectResponse: } await store_oauth_state(state, oauth_data) - # URL для callback - для фронтенда - callback_uri = f"{FRONTEND_URL}oauth/{provider}/callback" + # URL для callback - для фронтенда (добавляем слеш если его нет) + callback_uri = f"{FRONTEND_URL.rstrip('/')}/oauth/{provider}/callback" # 🔍 Создаем redirect URL вручную (обходим использование request.session в authlib) # VK не поддерживает PKCE, используем code_challenge только для поддерживающих провайдеров