如何通过Ethereum API获取用户导入Metamask的代币列表?
结论:无法通过公开API直接读取用户Metamask内已导入的代币白名单
Metamask的用户手动导入代币列表属于存储在用户本地客户端的隐私数据,官方并未在以太坊Provider API或Metamask专属扩展API中暴露对应的读取权限,避免第三方dApp未经授权获取用户的持仓偏好、交互合约等敏感信息,这也是Metamask隐私安全设计的一部分。
你查阅到的相关提示是准确的:
遗憾的是,我们无法获取钱包可访问的所有代币,需要提前知晓对应的智能合约地址。
如果你要在dApp中实现类似的代币筛选能力,目前通用的实现方案如下:
- 先维护你业务范围内支持的合规代币合约地址列表,在用户连接钱包后,通过链上RPC接口或区块浏览器的公开API,批量查询用户地址下这些合约的代币余额,筛选出余额大于0的代币展示
- 额外在你的dApp内提供自定义代币添加入口,让用户主动提交需要展示的代币合约地址,在dApp侧单独维护对应用户的代币白名单,无需依赖Metamask侧的导入数据
内容的提问来源于stack exchange,提问作者KasparTr
相关产品推荐
相关产品推荐

