Реализация единого профиля пользователя для мини-программ Super App
Super App — это приложение-контейнер, внутри которого работают независимые мини-программы: маркетплейс, такси, доставка, финансы, госуслуги. Ключевой принцип: пользователь логинится один раз, и все мини-программы получают его профиль без повторной аутентификации. Архитектура этого механизма определяет безопасность и UX всей платформы.
Архитектура единого профиля
Super App хранит master-профиль пользователя: ID, имя, аватар, верифицированный email и телефон, платёжные методы, адреса, KYC-статус. Мини-программы получают из него только то, что запросили — принцип минимальных привилегий.
Механизм передачи данных: при запуске мини-программы Super App передаёт короткоживущий токен (не master JWT) с ограниченным scope. Мини-программа использует этот токен для обращения к своему backend, который валидирует его через Super App Auth Service.
Super App ──launch(miniProgramToken)──► Mini Program
Mini Program ──validateToken──► Super App Auth API
Super App Auth API ──{userId, allowedScopes}──► Mini Program Backend
Реализация передачи профиля
На Flutter мини-программы могут быть реализованы как Flutter modules, загружаемые динамически. Super App передаёт профиль через Platform Channel:
// Super App — отправка профиля в мини-программу
class MiniProgramHost {
static const _channel = MethodChannel('super_app/mini_program_bridge');
Future<void> launchMiniProgram(String miniProgramId) async {
final token = await authService.generateMiniProgramToken(
miniProgramId: miniProgramId,
scopes: ['profile.basic', 'phone.verified'],
expiresIn: Duration(minutes: 30),
);
await _channel.invokeMethod('launch', {
'miniProgramId': miniProgramId,
'token': token,
'theme': ThemeManager.current.toJson(),
});
}
}
Для React Native мини-программ аналогично через Native Module. Для WebView-based мини-программ (как WeChat mini-programs) — через postMessage с origin-проверкой.
Scope и согласие пользователя
Пользователь должен знать, какие данные получает каждая мини-программа. При первом запуске мини-программы Super App показывает consent screen: "Программа X запрашивает доступ к вашему имени, номеру телефона и истории заказов. Разрешить?"
Согласие хранится в профиле Super App и не запрашивается повторно. Пользователь может отозвать разрешение в настройках профиля — тогда мини-программа при следующем открытии получает токен без scope прав, и её backend должен корректно обработать ограниченный доступ.
Сессионное управление
Если пользователь разлогинился из Super App (или сессия протухла) — все мини-программы должны это узнать немедленно. Механизм: Super App broadcast через Platform Channel во все активные мини-программы событие session_expired. Каждая мини-программа должна его обрабатывать и блокировать дальнейшие действия до повторной авторизации.
Единый профиль + безопасный механизм передачи токенов + consent-экраны + обработка сессионных событий — 3-5 недель. Стоимость рассчитывается индивидуально в зависимости от количества мини-программ и платформы.







