下载

arrow_down

构建

arrow_down

更多

arrow_down
activityactivityactivityactivity
  • themelight
  • languageIcon

  • menu
Skip to Content
Zh CnDocs
常见问题

常见问题

1. 无法检测到 bitkeep.ethereum

当检测不到 window.bitkeep.ethereum 时,开发者可以引导用户到 Bitget Wallet 官网下载插件。 示例代码如下:

function getProvider() { const provider = window?.bitkeep?.ethereum if (!provider) { window.open('https://web3.bitget.com/wallet-download?type=2') throw '您可以引导用户从官网下载' } return provider }

2. 钱包调用冲突问题

请使用 window.bitkeep.ethereum 连接到 Bitget Wallet 插件。它提供与 web3.currentProviderwindow.ethereum 相同的功能。

3. 多钱包冲突问题

在切换钱包连接之前,请清除之前钱包的事件监听器。

async function connect(type = 'bitkeep') { const lastProvider = provider const newProvider = getProvider(type) await newProvider.request({ method: 'eth_requestAccounts' }) // 1. 移除前一个钱包的监听器以防止逻辑冲突 if (lastProvider) { provider.removeAllListeners() } // 2. 成功授权并替换钱包提供者 provider = newProvider web3 = new Web3(provider) // 3. 监听地址和链ID变化的事件监听器;如果地址不存在则考虑断开连接 provider.on('accountsChanged', async (accounts) => { accountsChanged(accounts) }) provider.on('chainChanged', async (chainId) => { chainChanged(chainId) }) // 获取当前地址和链ID accountsChanged() chainChanged() // 4. 缓存默认连接的钱包 localStorage.setItem('injected', type) }

4. web3modal 集成问题

Bitget Wallet 插件提供以下 2 种解决方案示例:

  1. 打开 Bitget Wallet 但无法使用的解决方案:https://github.com/WalletConnect/web3modal/issues/574
  2. 使用 bitkeep-web3modal 示例代码来支持 Bitget Wallet 插件

多钱包集成方法:

import web3modal from 'bitkeep-web3modal' const web3Modal = new Web3Modal({ network: 'mainnet', // 可选 cacheProvider: true, // 可选 providerOptions: { bitkeep: { package: true, }, walletconnect: { display: { logo: 'data:image/gif;base64,INSERT_BASE64_STRING', name: 'Mobile', description: '使用移动钱包扫描二维码', }, package: WalletConnectProvider, options: { infuraId: 'INFURA_ID', // 必需 }, }, }, // 必需 })

5. ethers.js 集成问题

不推荐使用 ethers.js 在 window 上挂载 _ethers 对象,以避免因加载顺序而导致的冲突。

建议使用 BitKeep 注入的 _ethers 对象,并参考以下方法使用:

// 直接导入使用 import ethers from 'ethers' const ethers = require('ethers') // CDN window.ethers

6. Ton Connect 高风险问题

为了确保 Ton Connect 链接的安全性并防止用户遭受经济损失,Bitget Wallet 实现了域名检测逻辑。逻辑如下:

在 DApp 中,通过 Ton Connect 调用 Bitget Wallet 进行授权时,Deeplink URL 将包含授权连接数据。

https://bkcode.vip/ton-connect? v=2& id=xxxxx& r={"manifestUrl":"https://mini-app.tomarket.ai/tonconnect-manifest.json","items":[{"name":"ton_addr"}]}& ret=none

Bitget Wallet 将解析上述数据中 manifestUrl 对应的 JSON 文件数据。请求数据如下:

{ "url": "https://mini-app.tomarket.ai", "name": "Tomarket", "iconUrl": "https://mini-app.tomarket.ai/assets/tomarket-gray-180x180.png" }

Bitget Wallet 将比较从 manifestUrl 请求的 URL 主域名与 manifest.json 文件中的 URL。

例如:

  • manifestUrl:https://mini-app.tomarket.ai/tonconnect-manifest.json
  • tonconnect-manifest.json 文件中的 URL:https://mini-app.tomarket.ai

如果上述两个链接的主域名(tomarket.ai)一致,则通过检查;如果不一致,将显示警告。

Last updated on