Mini apps
Ver como MarkdownManifest de Miniapp
El JSON que describe tu Miniapp y cómo lo resuelve cada Host, incluido React Native.
Publica un JSON en /miniapp.webmanifest, en el mismo origen que tu Miniapp. Es compatible con el Web App Manifest estándar, más un bloque oauth.
import type { AndCoMiniappManifest } from "@andco/protocol";| Campo | Qué es |
|---|---|
id |
identificador estable de tu Miniapp |
name |
nombre completo |
short_name |
opcional, para espacios reducidos |
description |
opcional |
icons |
opcional, formato Web App Manifest |
start_url |
dónde arranca tu Miniapp — mismo origen que el manifest |
scope, display, theme_color, background_color |
opcionales, mismo significado que en un Web App Manifest |
oauth.client_id |
tu cliente OAuth registrado en Andco |
oauth.auth_url |
opcional — ver abajo |
{
"id": "https://carmarket.example/",
"name": "CarMarket",
"start_url": "https://carmarket.example/",
"icons": [{ "src": "https://carmarket.example/icon.png", "sizes": "512x512" }],
"oauth": { "client_id": "tu-client-id" }
}oauth.auth_url
Solo hace falta si tu cliente OAuth es confidencial. El Host lo visita primero, en tu propio origen, para que tu servidor arranque la autorización con andco.oauth.createAuthorizationRequest() antes de saltar a Andco — así el verificador PKCE y el state quedan en tu backend, no en el Host. Un cliente público no lo necesita: el Host arranca la autorización directamente.
Cómo lo resuelve un Host
Cualquier Host —una pestaña de navegador, React Native, el playground de Tauri— hace lo mismo:
- Descarga tu manifest y lo valida contra el schema.
- Pide a bank-webapp la configuración pública de tu cliente OAuth (
GET /api/oauth/clients/{client_id}):redirect_uris,allowed_origins,client_type. - Comprueba que
start_url(yauth_url, si lo declaraste) estén enallowed_originsy sean del mismo origen que el manifest. Si no, rechaza el manifest en vez de abrir tu Miniapp con un origen que no puede verificar.
En React Native
@andco/sdk-react-native-webview es lo que un Host nativo usa para hospedar tu Miniapp. AndCoMiniappManifest.load({ id, origin }) descarga y valida tu manifest; .resolve() trae la configuración pública de OAuth y aplica los mismos chequeos de origen. El componente <AndCoWebView miniapp={resolved} accessToken={...} .../> monta tu Miniapp en una WebView nativa: intercepta la navegación hacia Andco y la reemplaza por un consentimiento nativo en vez de una ventana emergente del navegador, y sincroniza las cookies de tu propio callback dentro de esa misma WebView.
Para tu Miniapp esto es transparente — el mismo código que corre en una pestaña de navegador corre sin cambios dentro del Host, el mismo principio que ya viste en browserPresenter(). Solo tienes que garantizar que start_url y auth_url vivan en el mismo origen que tu manifest.
