- 🔧 **OAuth Provider Registration**: Исправлена логика регистрации OAuth провайдеров - теперь корректно проверяются непустые client_id и client_secret
All checks were successful
Deploy on push / deploy (push) Successful in 8m32s
All checks were successful
Deploy on push / deploy (push) Successful in 8m32s
- 🔍 **OAuth Debugging**: Добавлено отладочное логирование для диагностики проблем с OAuth провайдерами - 🚫 **OAuth Error**: Исправлена ошибка "Provider not configured" при пустых переменных окружения OAuth
This commit is contained in:
@@ -3,6 +3,9 @@
|
||||
## [0.9.22] - 2025-09-22
|
||||
|
||||
### Fixed
|
||||
- 🔧 **OAuth Provider Registration**: Исправлена логика регистрации OAuth провайдеров - теперь корректно проверяются непустые client_id и client_secret
|
||||
- 🔍 **OAuth Debugging**: Добавлено отладочное логирование для диагностики проблем с OAuth провайдерами
|
||||
- 🚫 **OAuth Error**: Исправлена ошибка "Provider not configured" при пустых переменных окружения OAuth
|
||||
- 🔒 **OAuth Facebook**: Обновлена версия API с v13.0 до v18.0 (актуальная)
|
||||
- 🔒 **OAuth Facebook**: Добавлены обязательные scope и параметры безопасности
|
||||
- 🔒 **OAuth Facebook**: Улучшена обработка ошибок API и валидация ответов
|
||||
|
||||
@@ -147,6 +147,11 @@ def _register_oauth_provider(provider: str, client_config: dict) -> None:
|
||||
logger.warning(f"Unknown OAuth provider: {provider}")
|
||||
return
|
||||
|
||||
# 🔍 Отладочная информация
|
||||
logger.info(
|
||||
f"Registering OAuth provider {provider} with client_id: {client_config['id'][:8] if client_config['id'] else 'EMPTY'}..."
|
||||
)
|
||||
|
||||
# Базовые параметры для всех провайдеров
|
||||
register_params: dict[str, Any] = {
|
||||
"name": provider,
|
||||
@@ -171,15 +176,38 @@ def _register_oauth_provider(provider: str, client_config: dict) -> None:
|
||||
|
||||
oauth.register(**register_params)
|
||||
logger.info(f"OAuth provider {provider} registered successfully")
|
||||
|
||||
# 🔍 Проверяем что клиент действительно создался
|
||||
test_client = oauth.create_client(provider)
|
||||
if test_client:
|
||||
logger.info(f"OAuth client {provider} created successfully")
|
||||
else:
|
||||
logger.error(f"OAuth client {provider} failed to create after registration")
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to register OAuth provider {provider}: {e}")
|
||||
|
||||
|
||||
# 🔍 Диагностика OAuth конфигурации
|
||||
logger.info(f"Available OAuth providers in config: {list(PROVIDER_CONFIGS.keys())}")
|
||||
logger.info(f"Available OAuth clients: {list(OAUTH_CLIENTS.keys())}")
|
||||
|
||||
for provider in PROVIDER_CONFIGS:
|
||||
if provider in OAUTH_CLIENTS and OAUTH_CLIENTS[provider.upper()]:
|
||||
if provider.upper() in OAUTH_CLIENTS:
|
||||
client_config = OAUTH_CLIENTS[provider.upper()]
|
||||
if "id" in client_config and "key" in client_config:
|
||||
# 🔍 Проверяем что id и key не пустые
|
||||
client_id = client_config.get("id", "").strip()
|
||||
client_key = client_config.get("key", "").strip()
|
||||
|
||||
logger.info(
|
||||
f"OAuth provider {provider}: id={'SET' if client_id else 'EMPTY'}, key={'SET' if client_key else 'EMPTY'}"
|
||||
)
|
||||
|
||||
if client_id and client_key:
|
||||
_register_oauth_provider(provider, client_config)
|
||||
else:
|
||||
logger.warning(f"OAuth provider {provider} skipped: id={bool(client_id)}, key={bool(client_key)}")
|
||||
else:
|
||||
logger.warning(f"OAuth provider {provider} not found in OAUTH_CLIENTS")
|
||||
|
||||
|
||||
# Провайдеры со специальной обработкой данных
|
||||
@@ -356,6 +384,7 @@ async def oauth_login(_: None, _info: GraphQLResolveInfo, provider: str, callbac
|
||||
|
||||
client = oauth.create_client(provider)
|
||||
if not client:
|
||||
logger.error(f"OAuth client for {provider} not found. Available clients: {list(oauth._clients.keys())}")
|
||||
return JSONResponse({"error": "Provider not configured"}, status_code=400)
|
||||
|
||||
# Получаем параметры из query string
|
||||
@@ -499,6 +528,7 @@ async def oauth_login_http(request: Request) -> JSONResponse | RedirectResponse:
|
||||
|
||||
client = oauth.create_client(provider)
|
||||
if not client:
|
||||
logger.error(f"OAuth client for {provider} not found. Available clients: {list(oauth._clients.keys())}")
|
||||
return JSONResponse({"error": "Provider not configured"}, status_code=400)
|
||||
|
||||
# Генерируем PKCE challenge
|
||||
|
||||
Reference in New Issue
Block a user