本页目录
快速开始
发送请求前先连接钱包。将示例地址和 manifest URL 替换为有效值。用于身份验证时,使用服务器生成的一次性挑战,并在服务器验证证明。
了解如何检测、连接和与 TON 进行交互。
OneKey 通过 TON Connect 2.0 协议提供本文列出的操作。
Provider 检测
// Detect OneKey TON provider
const provider = window.$onekey?.tonconnect
if (!provider) {
throw new Error('OneKey TON provider not detected')
}
// Check device and wallet info
console.log('Device:', provider.deviceInfo)
console.log('Wallet:', provider.walletInfo)
console.log('Protocol Version:', provider.protocolVersion) // 2连接钱包
// Basic connection
const connectEvent = await provider.connect()
if (connectEvent.event === 'connect') {
const addressItem = connectEvent.payload.items.find(
item => item.name === 'ton_addr'
)
console.log('Connected:', addressItem?.address)
} else {
console.error('Connection failed:', connectEvent.payload.message)
}使用 Manifest 连接
对于生产环境应用,提供 manifest URL:
const connectRequest = {
manifestUrl: 'https://yourapp.com/tonconnect-manifest.json',
items: [
{ name: 'ton_addr' },
{ name: 'ton_proof', payload: 'your-challenge-string' }
]
}
const connectEvent = await provider.connect(2, connectRequest)
if (connectEvent.event === 'connect') {
const addressItem = connectEvent.payload.items.find(i => i.name === 'ton_addr')
const proofItem = connectEvent.payload.items.find(i => i.name === 'ton_proof')
console.log('Address:', addressItem?.address)
console.log('Proof:', proofItem?.proof)
}应用 Manifest 格式
在应用根目录创建 tonconnect-manifest.json:
{
"url": "https://yourapp.com",
"name": "Your App Name",
"iconUrl": "https://yourapp.com/icon.png",
"termsOfUseUrl": "https://yourapp.com/terms",
"privacyPolicyUrl": "https://yourapp.com/privacy"
}恢复连接
恢复之前的会话:
const connectEvent = await provider.restoreConnection()
if (connectEvent.event === 'connect') {
console.log('Session restored')
}断开连接
await provider.disconnect()事件处理
provider.listen((event) => {
console.log('Wallet event:', event)
})
// Or use specific event listeners
provider.on('accountChanged', (address) => {
if (address) {
console.log('Account changed:', address)
} else {
console.log('Disconnected')
}
})
provider.on('disconnect', () => {
console.log('Wallet disconnected')
})使用 TON Connect SDK
对于 React 应用,使用官方的 TON Connect SDK:
npm install @tonconnect/ui-reactimport { TonConnectUIProvider, TonConnectButton } from '@tonconnect/ui-react'
function App() {
return (
<TonConnectUIProvider manifestUrl="https://yourapp.com/tonconnect-manifest.json">
<TonConnectButton />
<YourApp />
</TonConnectUIProvider>
)
}OneKey 会被 TON Connect SDK 自动检测。
最后更新于