This commit is contained in:
parent f5f62ac828
commit 4b4d49a25a

View file

@ -13,12 +13,12 @@
Создайте файл `.env.local` (см. [`/.env.local.example`](./.env.local.example)) и задайте: Создайте файл `.env.local` (см. [`/.env.local.example`](./.env.local.example)) и задайте:
```bash ```bash
NEXT_PUBLIC_API_BASE_URL=https://test.ruact.ru # адрес бэкенда GoAuthSocial NEXT_PUBLIC_API_BASE_URL=https://test.ruact.ru
NEXT_PUBLIC_YANDEX_CLIENT_ID=xxxxxxxxxxxxxxxxxxxx # client_id из кабинета Yandex NEXT_PUBLIC_YANDEX_CLIENT_ID=xxxxxxxxxxxxxxxxxxxx
NEXT_PUBLIC_YANDEX_REDIRECT_URI=https://frontend.test.ruact.ru/auth/callback NEXT_PUBLIC_YANDEX_REDIRECT_URI=https://test.ruact.ru/auth/callback
``` ```
`NEXT_PUBLIC_YANDEX_REDIRECT_URI` должен совпадать с URL, указанный в настройках приложения Yandex ID. На этот адрес вернётся код авторизации, который фронтенд отправит на бэкенд. `NEXT_PUBLIC_YANDEX_REDIRECT_URI` должен совпадать с адресом, указанным в настройках приложения Yandex ID.
### Запуск в разработке ### Запуск в разработке
@ -27,23 +27,23 @@ pnpm install
pnpm dev pnpm dev
``` ```
Откройте [http://localhost:3000](http://localhost:3000). На главной странице расположен брендированный лендинг с официальной кнопкой Yandex ID (через SDK `sdk-suggest`). После сборки и деплоя фронтенд обслуживается по `https://test.ruact.ru`. На главной странице размещена кнопка Yandex ID (через SDK `sdk-suggest`).
### Пользовательский flow ### Пользовательский flow
1. Пользователь нажимает кнопку «Войти через Yandex». 1. Пользователь нажимает кнопку «Войти через Yandex».
2. Yandex SDK перенаправляет на страницу авторизации Yandex ID с указанным `redirect_uri`. 2. SDK перенаправляет на страницу авторизации Яндекса с `redirect_uri=https://test.ruact.ru/auth/callback`.
3. После успешного подтверждения Yandex возвращает браузер на `/auth/callback` с `code` и `state`. 3. После авторизации Яндекс возвращает браузер на `/auth/callback` с `code` и `state`.
4. Страница `/auth/callback` автоматически отправляет `code` на GoAuthSocial (`/api/v1/auth/callback/yandex`). 4. Страница `/auth/callback` отправляет эти данные на backend (`/api/v1/auth/callback/yandex`).
5. Бэкенд возвращает `AuthCallbackResponse` (access_token, refresh_token, application_token и др.), который отображается пользователю. 5. Backend возвращает `AuthCallbackResponse` с токенами и `application_token`.
Если SDK не загрузился, отображается fallback‑кнопка, которая запрашивает redirect URL у бэкенда (`/api/v1/auth/authorize/yandex`) и вручную выполняет перенаправление. Если SDK не загрузился, отображается fallback‑кнопка, которая запрашивает redirect URL у бэкенда (`/api/v1/auth/authorize/yandex`) и вручную выполняет перенаправление.
### Дальнейшая интеграция ### Дальнейшая интеграция
- Сохраните `application_token` и токены провайдера в хранилище клиента. - Сохраните `application_token` и токены провайдера в хранилище клиента.
- Организуйте защищённые запросы к вашему API с использованием `application_token`. - Организуйте авторизованные запросы к API через `application_token`.
- Добавьте обработку ошибок и logout по требованиям продукта. - Реализуйте обработку ошибок и logout под требования конкретного продукта.
### Скрипт Yandex ID ### Скрипт Yandex ID