如何通过Web3.js触发MetaMask连接额外钱包的授权弹窗
MetaMask多钱包授权连接解决方案
当用户已连接过钱包后,eth_requestAccounts只会返回当前已授权的账户列表,不会触发新的授权弹窗。要实现程序化触发多账户授权,可以用以下方法:
使用
wallet_requestPermissions方法发起权限请求
这个方法会主动唤起MetaMask的权限确认弹窗,用户可以选择新增授权的账户(包括已连接的其他钱包账户)。示例代码:// 请求eth_accounts权限,触发账户选择弹窗 await this.eth.request({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] }); // 获取所有已授权的账户 const accounts = await this.eth.request({ method: 'eth_accounts' });执行这段代码后,MetaMask会弹出包含用户所有可用账户的选择界面,用户勾选新账户后,该账户就会被授权给你的DApp,后续
eth_accounts就能返回包含新账户的列表。额外说明
- 确保用户使用的MetaMask版本在v7.0.0以上,该版本开始支持
wallet_requestPermissions方法; - 如果用户之前已经拒绝过该站点的权限请求,可能需要引导用户在MetaMask的站点权限设置中手动开启多账户访问。
- 确保用户使用的MetaMask版本在v7.0.0以上,该版本开始支持
内容的提问来源于stack exchange,提问作者xgf115
相关产品推荐
相关产品推荐

