Frontend OpenApps
Le côté client d'une application OpenApps : le SDK appelé par votre application web ou mobile, comment les utilisateurs finaux s'authentifient, et comment le frontend hébergé est servi. La politique régit toujours chaque écriture depuis le client, donc associez cette compétence avec openapps-backend lorsqu'une action client nécessite une règle ou un invariant, et openapps-deploy pour l'hébergement et les domaines. Pour naviguer dans la famille, voir la compétence racine openapps.
Routeur de référence
Lisez uniquement la ligne correspondant à la tâche ou au terme actuel.
| Tâche ou terme | Lire |
|---|---|
Lectures SDK, écritures, abonnements, pagination, queryAggregate, count, filtres, tri, curseur, setMany, set(path, null) | Référence SDK |
| Construire un frontend web | Guide application web |
Serveur de développement local (npm run dev, Vite, localhost), échec de la popup de connexion, redirect_uri origin is not a registered origin, CORS pendant le développement local | Développer sur localhost |
Minuterie de rafraîchissement, setInterval, polling, "garder à jour", compte à rebours, interface utilisateur obsolète | Référence SDK |
| Construire pour React Native / mobile | Guide React Native |
OTP par email utilisateur-app, OAuth, openBoundedWidget, widget de connexion unifié, authentification Turnkey par défaut | Authentification application |
Connexion avec portefeuille personnel ; walletLogin, authMethod:'phantom', supportsWalletSignIn, portefeuille non pris en charge / Wallet Standard | Connexion portefeuille |
Connexion portefeuille perdue lors du rafraîchissement, getCurrentUser() nul après rechargement, bounded_last_auth_method, méthode de restauration de session | Connexion portefeuille - "Les sessions portefeuille survivent aux rechargements" |
| Invités, utilisateurs anonymes, liens d'invitation, mise à niveau de compte | Comptes anonymes |
Lier le compte X d'un utilisateur, connect('x'), completeConnection, getConnections, pseudo X vérifié, __connections__ | Comptes connectés |
| Frontend hébergé et URLs d'application | Hébergement frontend |
Connexion développeur CLI ou openapps login | Comptes développeur |
Portefeuille intégré, auth.wallets, @user.address après connexion email/sociale | Portefeuilles intégrés |
onramp(), acheter SOL/USDC par carte, Coinbase Onramp, rechargement de portefeuille | Onramp |
Règles de base
- Chaque écriture client est régie par la politique ; une
403sur une écriture est un refus de règle, pas un bug client. Voir la compétence openapps-backend pour la règle. - Les lectures refusées renvoient des réponses
200vides, jamais403. - Vivant par défaut ; ne jamais faire de polling. Chaque collection est push-based, donc un
setIntervalqui relit un chemin est un bug, pas un choix de réglage - utilisezuseQuery(React) ousubscribe. Les comptes à rebours se font sur l'état de l'horloge locale, pas sur une relecture. Pour les rares surfaces qui ne sont pas en direct (runQuery,functions.invoke, tiers), faites du polling délibérément : mettez en pause dans un onglet caché, limitez le timer à l'état qui en a besoin, diminuez progressivement et bornez-le. Voir sdk-reference.md. - Regroupez les lectures pour listes de valeurs calculées avec
runQueryMany; ne mappez jamaisrunQuerysur une liste. Voir sdk-reference.md. - Placez les clés API du fournisseur dans les secrets OpenApps (backend), jamais dans le code frontend.
- Si
npm auditsignale l'avisuuidGHSA-w5hq-g745-h8pq via@solana/web3.js -> jayson, utilisez la recette de remplacement délimitée. Elle traite cet avis ; exécuteznpm audit --omit=devsur le fichier lockfile installé et enquêtez sur les autres résultats séparément. - Conservez les paramètres d'authentification par défaut pour la plupart des applications. N'ajoutez pas
authModeouauth.walletspour "activer les portefeuilles" : la connexion par défaut Turnkey email/sociale inclut déjà@user.address. Déployez"auth": { "wallets": true }uniquement pour une session de paire de clés EXTERNE (connexion avec portefeuille personnel, client SDK serveur avec paire de clés, voie de données CLI avec paire de clés). Règle complète et exceptions : embedded-wallets.md. @user.id(l'identifiant du compte) est l'identité/propriété ;@user.addressest le portefeuille. Clés de propriété, adhésion et gardes d'authentification sur@user.id(toujours présent). Utilisez@user.addressuniquement pour la sémantique de portefeuille/onchain - jamais comme clé d'identité.- La connexion portefeuille sur un téléphone nécessite l'adaptateur Solana Mobile. Un navigateur de téléphone n'injecte jamais d'applications portefeuille ; gardez
@solana-mobile/wallet-standard-mobileinstallé (legacy-peer-deps=truedans.npmrc) et ne vérifiez jamaiswindow.solanaavant d'ouvrir le widget. Voir Solana Mobile.