关于 phantom-connect
phantom-connect 是 Phantom Connect SDK 生态的集成指南,面向构建 Solana 钱包连接应用的开发者,涵盖 React、React Native 和浏览器 SDK,以及社交登录和扩展钱包接入。
主要功能
- 01支持 React、React Native 和浏览器 SDK
- 02接入 Google、Apple 或 Phantom 扩展
- 03连接钱包并签署、发送交易
- 04提供支付、代币门控和 NFT 铸造参考
适用场景
- 01为 React 应用加入 Phantom 钱包连接
- 02在 Expo 应用中接入嵌入式钱包
- 03实现 SOL 或 USDC 支付流程
- 04构建代币门控页面或 NFT 铸造页
MCP 相关
README 提及 MCP Server 可用于 AI 文档访问,但未说明具体操作方式。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sendaifun/ skills --skill phantom-connect安装后在 Claude Code 中输入/phantom-connect确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/browser-sdk.mdnft-minting.mdpayments.mdreact-native-sdk.mdreact-sdk.mdtoken-gating.mdtransactions.md详细介绍
Phantom Connect SDK
使用 Phantom Connect SDK 生态系统构建连接钱包的 Solana 应用。
SDK 选择
| 平台 | SDK | 包 |
|---|---|---|
| React Web 应用 | React SDK | @phantom/react-sdk |
| React Native / Expo | React Native SDK | @phantom/react-native-sdk |
| Vanilla JS / Vue / Angular | Browser SDK | @phantom/browser-sdk |
前提条件
- Phantom Portal 账户 — 在 phantom.com/portal 注册
- App ID — 在 Portal → App → Set Up 中获取
- 允许列表中的 URL — 在 Portal 中添加域名和重定向 URL
身份验证提供方
| 提供方 | 说明 | 是否需要 appId |
|---|---|---|
"injected" | Phantom 浏览器扩展 | 否 |
"google" | Google OAuth(嵌入式钱包) | 是 |
"apple" | Apple ID(嵌入式钱包) | 是 |
重要规则
- 始终使用
signAndSendTransaction— 嵌入式钱包不支持signTransaction和signAllTransactions - 始终使用
@solana/web3.js中的LAMPORTS_PER_SOL进行金额转换 — 切勿将1000000000硬编码 - 将所有异步 SDK 调用放在 try-catch 中 — 用户随时可以拒绝提示
- 签名之前检查
isConnected— 在执行任何操作之前确认钱包已连接 - React Native:
react-native-get-random-values必须是第一个导入项 — 放在所有其他导入项之前 - BrowserSDK 必须是单例 — 每个应用创建一个实例,切勿创建多个实例
- 仅从
@phantom/browser-sdk导入AddressType - 测试时使用 devnet,生产环境使用 mainnet-beta — 切勿使用真实资金在 mainnet 上测试
- 切勿泄露私钥 — 所有签名均由 Phantom 在内部处理
- 嵌入式钱包消费限额:每个应用、每位用户每天 1,000 美元
- 社交登录会话从上次身份验证事件起保留 7 天 — 请妥善处理会话过期
快速开始
React SDK
import { PhantomProvider, useModal, usePhantom, darkTheme } from "@phantom/react-sdk";
import { AddressType } from "@phantom/browser-sdk";
function App() {
return (
<PhantomProvider
config={{
providers: ["google", "apple", "injected"],
appId: "your-app-id",
addressTypes: [AddressType.solana],
authOptions: { redirectUrl: "https://yourapp.com/callback" },
}}
theme={darkTheme}
>
<YourApp />
</PhantomProvider>
);
}
React Native SDK
// CRITICAL: Must be first import
import "react-native-get-random-values";
import { PhantomProvider, AddressType, darkTheme } from "@phantom/react-native-sdk";
// Requires app.json: { "expo": { "scheme": "myapp", "plugins": [...] } }
Browser SDK
import { BrowserSDK, AddressType } from "@phantom/browser-sdk";
const sdk = new BrowserSDK({
providers: ["google", "apple", "injected"],
appId: "your-app-id",
addressTypes: [AddressType.solana],
autoConnect: true,
});
参考文档
如需了解详细实现模式,请阅读以下文件:
- references/react-sdk.md — 完整的 React SDK 参考(钩子、组件、主题)
- references/react-native-sdk.md — 移动端设置、Expo 配置、深度链接
- references/browser-sdk.md — Vanilla JS 模式、事件、钱包发现
- references/transactions.md — Solana 交易模式(SOL、SPL 代币)
- references/payments.md — 加密货币支付流程(SOL、USDC、后端验证)
- references/token-gating.md — 代币门控访问(客户端、服务端、NFT)
- references/nft-minting.md — NFT 铸造页面、Metaplex Core、压缩 NFT
常见问题
| 问题 | 解决方案 |
|---|---|
| "appId required" | 使用 google/apple 提供方时,请添加来自 Phantom Portal 的 appId |
| 重定向不起作用 | 在 Phantom Portal 中将 redirectUrl 添加到允许列表 |
| React Native 崩溃 | 将 react-native-get-random-values 作为第一个导入项 |
| 未检测到扩展 | 使用 waitForPhantomExtension() 并设置超时时间 |
signTransaction 错误 | 改用 signAndSendTransaction — 嵌入式钱包不支持 signTransaction |
资源
- Phantom Portal — 应用注册
- Phantom Docs — 完整文档
- SDK Examples — 可运行的演示
- MCP Server — AI 文档访问
评论
支持 Markdown