概述
Bitget Wallet(原 BitKeep)作为全球领先的多链数字钱包,为开发者提供了便捷的 NEAR 协议集成方案。当用户在 Bitget Wallet 应用内或已安装 Chrome 扩展的浏览器中访问 DApp 时,可通过全局对象 window.bitkeep.near
调用一系列 API,实现账户管理、交易签名等核心功能。本文详细解析这些接口的使用方法与最佳实践。
初始化与基础配置
在支持的环境中,开发者可通过以下代码获取 NEAR 提供者对象:
const provider = window.bitkeep.near
获取该对象后,即可调用后续各项接口方法。请确保 DApp 运行环境已正确注入该对象,建议在调用前进行可用性检查。
核心 API 详解
获取账户信息
getAccountId
返回当前已登录用户的账户 ID(用户名)。
用法示例:
const accountId = await provider.getAccountId()
getPublicKey
获取与用户账户关联的公钥,用于加密验证或第三方服务集成。
用法示例:
const publicKey = await provider.getPublicKey()
登录与权限管理
requestSignIn
触发 NEAR 钱包登录流程,请求用户登录并授权指定合约的访问权限。
参数说明:
contractId
: 合约账户 IDmethodNames
: 允许调用的合约方法名称,传null
表示无方法限制,''
或[]
表示允许任何方法createNew
: 是否需要创建新的访问密钥,默认为false
用法示例:
const result = await provider.requestSignIn({
contractId: 'example-contract.near',
methodNames: ['method1', 'method2'],
createNew: false
})
isSignedIn
检查用户当前是否已登录 NEAR 钱包。
用法示例:
const signedIn = await provider.isSignedIn()
signOut
断开当前 NEAR 钱包连接,注销用户登录状态。
用法示例:
await provider.signOut()
交易与签名操作
signAndSendTransaction
对交易进行签名并发送到 NEAR 网络。
参数说明: 接受交易参数对象,包含交易详情
用法示例:
const transactionResult = await provider.signAndSendTransaction({
// 交易参数
})
requestSignTransactions
请求对多笔交易进行批量签名,提高复杂操作效率。
参数说明: 包含多笔交易的数组
用法示例:
const results = await provider.requestSignTransactions({
transactions: [tx1, tx2, tx3]
})
所有权验证
verifyOwner
通过签名消息或安全调用,验证当前用户是否为 NEAR 账户的真实所有者。
参数说明:
message
: 待验证消息accountId
: 账户 ID
用法示例:
const isValid = await provider.verifyOwner(message, accountId)
最佳实践与注意事项
- 错误处理:所有 API 调用都应使用 try-catch 块进行错误捕获,提供用户友好的错误提示
- 状态管理:使用
isSignedIn
定期检查登录状态,处理会话过期情况 - 权限控制:根据 DApp 需求合理设置
requestSignIn
的 methodNames 参数,遵循最小权限原则 - 用户体验:在交易签名等关键操作前,明确告知用户操作内容和潜在风险
常见问题
Q1: 如何检测 Bitget Wallet 是否已安装并注入 NEAR 对象?
A: 可以通过检查 typeof window.bitkeep !== 'undefined' && window.bitkeep.near
来判断环境是否就绪。建议在页面加载时进行检测,并引导用户安装钱包或扩展。
Q2: requestSignIn 方法中的 createNew 参数有什么作用? A: 当设置为 true 时,会为用户创建一个新的访问密钥,而不是使用现有密钥。这可用于更细粒度的权限管理或安全隔离,但通常保持默认值 false 即可满足大多数场景。
Q3: 交易发送后如何获取执行结果?
A: signAndSendTransaction
返回的 Promise 会解析为交易结果对象,包含交易哈希、执行状态等详细信息。开发者需要解析该对象并处理可能出现的执行失败情况。
Q4: 是否支持测试网络集成? A: 是的,Bitget Wallet 支持 NEAR 主网和测试网。确保您的 DApp 配置与用户选择的网络匹配,以获得正确的链上交互体验。
Q5: verifyOwner 方法的主要应用场景是什么? A: 该方法主要用于需要验证用户对账户所有权的场景,如第三方服务接入、身份验证或高安全等级操作确认。它通过密码学证明确保用户确实控制着指定账户。
Q6: 如何处理用户拒绝签名或交易的情况? A: 所有签名相关方法在用户拒绝时都会抛出错误。开发者应该捕获这些错误并向用户提供清晰的反馈,说明操作已取消,并指导用户如何重新尝试或解决问题。
通过本文介绍的 API,开发者可以轻松地将 NEAR 协议集成到 DApp 中,为用户提供流畅的区块链交互体验。建议在实际开发过程中参考官方文档和社区资源,确保集成方案的稳定性和安全性。