Web3Modal对接WalletConnect时Trust Wallet浏览器跳转谷歌问题咨询
问题解答
1. 正确完成WalletConnect钱包连接的方案
你遇到的跳转问题是代码逻辑和运行环境不匹配导致的,按以下步骤修改即可:
- 优先适配钱包内置浏览器环境:Trust Wallet等加密钱包的内置浏览器会直接注入
window.ethereum提供者,不需要走WalletConnect的二维码连接流程,你当前的代码触发了WalletConnect的移动端跳转逻辑才会重定向到谷歌。连接前先做环境判断:let provider; if (window.ethereum) { // 钱包内置环境直接用注入的provider provider = window.ethereum; } else { // 普通浏览器环境走Web3Modal流程 provider = await web3Modal.connect(); } - 删除冗余代码:你当前代码中
await web3Modal.connect()已经完成了连接触发逻辑,后续的await web3Modal.toggleModal()属于重复调用,会触发异常跳转,直接删除该行即可。 - 确保运行环境为HTTPS,所有钱包连接逻辑都不支持HTTP协议下运行。
修正后的完整参考代码:
const providerOptions = { walletconnect: { package: WalletConnectProvider, options: { rpc: { 56: 'https://bsc-dataseed1.binance.org' }, chainId: 56 } } } const web3Modal = new Web3Modal({ network: "mainnet", cacheProvider: true, providerOptions }); let provider; // 优先使用钱包注入的provider if (window.ethereum) { provider = window.ethereum; } else { provider = await web3Modal.connect(); } const newWeb3 = new Web3(provider); const accounts = await newWeb3.eth.getAccounts(); console.log(accounts);
2. WalletConnect连接测试网的说明
可以连接EVM兼容的测试网,不过Ropsten测试网已经正式弃用,建议使用当前仍在维护的Goerli、Sepolia等以太坊测试网,仅需要修改providerOptions中的rpc映射和chainId参数为对应测试网的配置即可,WalletConnect本身没有限制只能连接主网,所有EVM兼容链都可以支持。
内容的提问来源于stack exchange,提问作者Mohammad Amin Ahmadi
相关产品推荐
相关产品推荐

