OpenApps 前端
OpenApps 應用程式的客戶端:您的 Web 或行動應用程式呼叫的 SDK、終端使用者如何驗證身分,以及託管前端如何提供服務。政策仍然管控客戶端的每一次寫入,因此當客戶端動作需要規則或不變性時,請與 openapps-backend 技能配對;託管與網域部分則需配合 openapps-deploy。如需在家族中進行路由,請參閱根目錄的 openapps 技能。
參考路由器
僅讀取與目前任務或術語相符的行。
| 任務或術語 | 參考文件 |
|---|---|
SDK 讀取、寫入、訂閱、分頁、queryAggregate、count、篩選、排序、游標、setMany、set(path, null) | SDK 參考 |
| 建置 Web 前端 | Web 應用程式指南 |
本地開發伺服器(npm run dev、Vite、localhost)、登入彈窗失敗、redirect_uri origin is not a registered origin、本地開發時的 CORS | 在本機開發 |
重新整理計時器、setInterval、輪詢、「保持更新」、倒數計時、過時 UI | SDK 參考 |
| 為 React Native / 行動裝置建置 | React Native 指南 |
應用程式使用者電子郵件 OTP、OAuth、openBoundedWidget、統一登入小工具、預設 Turnkey 認證 | 應用程式認證 |
自帶錢包登入;walletLogin、authMethod:'phantom'、supportsWalletSignIn、不支援的錢包 / Wallet Standard | 錢包登入 |
錢包登入在重新整理後遺失、重新載入後 getCurrentUser() 為 null、bounded_last_auth_method、會話還原方法 | 錢包登入 - 「錢包會話在重新整理後依然存在」 |
| 訪客、匿名使用者、邀請連結、帳號升級 | 匿名帳號 |
連結使用者的 X(Twitter)帳號、connect('x')、completeConnection、getConnections、已驗證的 X 使用者名稱、__connections__ | 已連結帳號 |
| 託管前端與應用程式 URL | 前端託管 |
CLI 開發者登入或 openapps login | 開發者帳號 |
內嵌錢包、auth.wallets、電子郵件/社群登入後的 @user.address | 內嵌錢包 |
onramp()、透過信用卡購買 SOL/USDC、Coinbase Onramp、錢包充值 | 入金 |
經驗法則
- 每次客戶端寫入都受政策管控;寫入時收到
403表示規則拒絕,而非客戶端錯誤。相關規則請參閱 openapps-backend 技能。 - 被拒絕的讀取會回傳空的
200回應,絕不會回傳403。 - 預設即時更新;絕不輪詢。 每個集合都是基於推送的,因此使用
setInterval重新讀取路徑是一個錯誤,而非調整選項 - 請使用useQuery(React)或subscribe。倒數計時應使用本地時鐘狀態,而非重新讀取資料。對於少數非即時更新的表面(runQuery、functions.invoke、第三方服務),請有目的地輪詢:在隱藏的分頁中暫停、將計時器範圍限制在需要它的狀態、進行退避並設定上限。請參閱 sdk-reference.md。 - 使用
runQueryMany批次讀取計算值的清單;切勿對清單中的每個元素都呼叫runQuery。請參閱 sdk-reference.md。 - 將提供者 API 金鑰放在 OpenApps 機密(後端)中,絕對不要放在前端程式碼中。
- 如果
npm audit報告透過@solana/web3.js -> jayson引發的uuid安全通報 GHSA-w5hq-g745-h8pq,請使用有範圍限制的 覆寫配方。 此配方可解決該安全通報;請在已安裝的鎖定檔案上執行npm audit --omit=dev,並分別調查任何剩餘的發現。 - 對大多數應用程式而言,請保留預設認證設定。 請勿新增
authMode或auth.wallets來「啟用錢包」:預設的 Turnkey 電子郵件/社群登入已經包含了@user.address。僅在需要外部金鑰對會話(自帶錢包登入、伺服器 SDK 金鑰對客戶端、CLI 金鑰對資料通道)時才部署"auth": { "wallets": true }。完整規則與退出選項:embedded-wallets.md。 @user.id(帳號 ID)是身分/所有權;@user.address是錢包。 在金鑰所有權、成員資格及認證防護上,請使用@user.id(始終存在)。僅在需要錢包/鏈上語義時才使用@user.address- 切勿將其作為身分金鑰。- 在手機上進行錢包登入需要 Solana Mobile 適配器。 手機瀏覽器不會注入錢包應用程式;請保持安裝
@solana-mobile/wallet-standard-mobile(在.npmrc中設定legacy-peer-deps=true),且在開啟小工具前絕不預先檢查window.solana。請參閱 Solana Mobile。