3.8 KiB
3.8 KiB
OAuth Deployment Instructions
Что было исправлено
OAuth маршруты существовали, но не были подключены к Express приложению.
Изменения в коде:
-
backend/src/index.ts:
- Добавлен импорт:
import passport from './modules/auth/passport.config'; - Добавлен импорт:
import oauthRoutes from './modules/auth/oauth.routes'; - Добавлена инициализация Passport:
app.use(passport.initialize()); - Подключены OAuth маршруты:
app.use('/api/auth', oauthRoutes);
- Добавлен импорт:
-
backend/src/modules/auth/oauth.routes.ts:
- Убран тип
any, добавлен интерфейсAuthenticatedUser
- Убран тип
Развертывание на production сервере
Шаг 1: Загрузить изменения на сервер
# На локальной машине
cd d:\Ospab-projects\ospabhost8.1\ospabhost\backend
scp -r dist/ root@ospab.host:/root/ospabhost/backend/
Шаг 2: Перезапустить backend сервер
# На сервере
ssh root@ospab.host
pm2 restart backend
pm2 logs backend --lines 50
Шаг 3: Проверить, что OAuth маршруты работают
# Проверка Google OAuth endpoint
curl -I https://ospab.host:5000/api/auth/google
# Проверка GitHub OAuth endpoint
curl -I https://ospab.host:5000/api/auth/github
# Проверка Yandex OAuth endpoint
curl -I https://ospab.host:5000/api/auth/yandex
Каждый должен вернуть 302 (redirect) или инициировать OAuth flow.
Настройки OAuth провайдеров
Google Cloud Console
- Authorized redirect URIs:
https://ospab.host:5000/api/auth/google/callback - Client ID: указан в .env файле
- Client Secret: указан в .env файле
GitHub OAuth App
- Authorization callback URL:
https://ospab.host:5000/api/auth/github/callback - Client ID: указан в .env файле
- Client Secret: указан в .env файле
Yandex OAuth
- Redirect URI:
https://ospab.host:5000/api/auth/yandex/callback - Client ID: указан в .env файле
- Client Secret: указан в .env файле
Проверка работоспособности
После развертывания проверьте:
- ✅ Backend стартует без ошибок
- ✅ OAuth endpoints отвечают (не 404)
- ✅ Кнопки OAuth на frontend инициируют редирект
- ✅ После авторизации через провайдера происходит редирект обратно на сайт с токеном
- ✅ Пользователь создается в базе данных (если новый)
- ✅ Токен сохраняется в localStorage и происходит автовход
Troubleshooting
Ошибка 404 на /api/auth/google
- Убедитесь, что backend перезапущен после обновления
- Проверьте pm2 logs:
pm2 logs backend
Ошибка "Email не предоставлен провайдером"
- GitHub: email должен быть публичным в настройках профиля
- Google/Yandex: должны быть запрошены правильные scopes
Redirect не работает
- Проверьте, что FRONTEND_URL в .env правильный:
https://ospab.host - Убедитесь, что callback URLs в OAuth провайдерах совпадают с OAUTH_CALLBACK_URL
Пользователь не создается
- Проверьте логи Prisma
- Убедитесь, что DATABASE_URL правильный в .env