Данный метод запускает и проводит OIDC-авторизацию для мини-приложения в фоновом режиме. Родительское приложение выполняет цепочку редиректов авторизации в скрытом окне и возвращает результат последнего запроса — статус, тело и URL конечного endpoint'а.
Платформы
| B2B Web | B2C Web | B2C Cordova |
|---|---|---|
Параметры метода
| Имя параметра | Тип параметра | Обязательный | Описание параметра |
|---|---|---|---|
| url | string | да | Стартовый URL авторизации на вашем бэкенде, например https://my-app.com/api/auth/condo |
Возвращаемое значение
В случае успешного выполнения вы получите JSON-объект следующего типа:
Возвращаемый тип
Пример возвращаемого значения
typescripttype RequestAuthData = { response: { status: number // HTTP-статус последнего ответа body: string // Тело последнего ответа url: string // URL последнего endpoint'а в цепочке (например, callback) } }
Пример использования
typescript// pages/index.tsx import React, { useEffect, useState } from 'react' import bridge from '@open-condo/bridge' const AUTH_START_URL = 'https://my-app.com/api/auth/condo' const CALLBACK_URL = 'https://my-app.com/api/auth/condo/callback' export default function MiniappPage (): React.ReactNode { const [condoUserId, setCondoUserId] = useState<string | null>(null) // Проверка текущей сессии мини-приложения const { user, refetchUser, authLoading } = useAuth() // Получаем condoUserId из параметров запуска useEffect(() => { bridge.send('CondoWebAppGetLaunchParams').then(({ condoUserId }) => { setCondoUserId(condoUserId) }).catch(console.error) }, []) // Если сессия отсутствует или принадлежит другому пользователю — авторизуемся useEffect(() => { if (authLoading || !condoUserId) return if (!user || user.id !== condoUserId) { bridge.send('CondoWebAppRequestAuth', { url: AUTH_START_URL }).then(({ response }) => { if (response.status === 200 && response.url === CALLBACK_URL) { // Авторизация прошла успешно — обновляем данные пользователя refetchUser() } }).catch(console.error) } }, [authLoading, user, condoUserId, refetchUser]) return ( // ... ) }
Безопасность токенов при авторизации
Несмотря на то, что данный метод возвращает URL и тело ответа последнего запроса, передавать токены авторизации в открытом виде небезопасно.
Авторизация в вашем мини-приложении должна быть построена на
http-only куках, которые бэкенд мини-приложения устанавливает самостоятельно в процессе OIDC-колбэка.
Таким образом, токены никогда не попадают в JavaScript-контекст страниц