This commit is contained in:
@@ -407,7 +407,7 @@ async def oauth_login(_: None, _info: GraphQLResolveInfo, provider: str, callbac
|
||||
}
|
||||
await store_oauth_state(state, oauth_data)
|
||||
|
||||
# Используем URL из фронтенда для callback - для фронтенда (добавляем слеш если его нет)
|
||||
# Callback должен идти на backend, получаем из base_url (который должен быть backend URL)
|
||||
oauth_callback_uri = f"{callback_data['base_url'].rstrip('/')}/oauth/{provider}/callback"
|
||||
|
||||
try:
|
||||
@@ -537,16 +537,19 @@ async def oauth_login_http(request: Request) -> JSONResponse | RedirectResponse:
|
||||
state = token_urlsafe(32)
|
||||
|
||||
# 🔍 Сохраняем состояние OAuth только в Redis (убираем зависимость от request.session)
|
||||
# Получаем redirect_uri из query параметров или используем FRONTEND_URL по умолчанию
|
||||
final_redirect_uri = request.query_params.get("redirect_uri", FRONTEND_URL)
|
||||
oauth_data = {
|
||||
"code_verifier": code_verifier,
|
||||
"provider": provider,
|
||||
"redirect_uri": FRONTEND_URL,
|
||||
"redirect_uri": final_redirect_uri,
|
||||
"created_at": int(time.time()),
|
||||
}
|
||||
await store_oauth_state(state, oauth_data)
|
||||
|
||||
# URL для callback - для фронтенда (добавляем слеш если его нет)
|
||||
callback_uri = f"{FRONTEND_URL.rstrip('/')}/oauth/{provider}/callback"
|
||||
# Получаем backend URL из request
|
||||
backend_url = request.url.scheme + "://" + request.url.netloc
|
||||
callback_uri = f"{backend_url}/oauth/{provider}/callback"
|
||||
|
||||
# 🔍 Создаем redirect URL вручную (обходим использование request.session в authlib)
|
||||
# VK не поддерживает PKCE, используем code_challenge только для поддерживающих провайдеров
|
||||
|
||||
Reference in New Issue
Block a user