Реалізація єдиного профілю користувача для мініпрограм у 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 мініпрограм) — через postMessage з перевіркою origin.
Scope та згода користувача
Користувач повинен знати, які дані отримує кожна мініпрограма. При першому запуску мініпрограми Super App показує consent screen: "Програма X запитує доступ до вашого імяти, номера телефону та історії замовлень. Дозволити?"
Згода зберігається в профілі Super App та не запитується повторно. Користувач може відозвати дозвіл у налаштуваннях профілю — тоді мініпрограма при наступному відкритті отримує токен без scope прав, та його backend повинен коректно обробити обмежений доступ.
Управління сесіями
Якщо користувач розлогувався з Super App (або сесія протухла) — всі мініпрограми повинні це дізнатися негайно. Механізм: Super App broadcast через Platform Channel у всі активні мініпрограми подію session_expired. Кожна мініпрограма повинна її обробляти та блокувати подальші дії до повторної авторизації.
Єдиний профіль + безпечний механізм передачі токенів + consent-екрани + обробка сесійних подій — 3–5 тижнів. Вартість розраховується індивідуально в залежності від кількості мініпрограм та платформи.







