【问题标题】:Get all Ethereum accounts from Metamask从 Metamask 获取所有以太坊账户
【发布时间】:2019-03-29 08:02:27
【问题描述】:

我想获取用户在 Metamask 中添加的所有帐户。我尝试了所有 web3.js 方法来获取帐户,但我总是只得到一个始终是当前选择的帐户。

根据 web3.js 文档,web3.eth.getAccounts() 应该返回该节点控制的所有帐户。但是,我得到了一个只有当前选择的数组。不用说,我在 Metamask 中创建了多个帐户。

【问题讨论】:

    标签: ethereum web3 metamask


    【解决方案1】:

    文档说:Account List Reflects User Preference

    当用户在 MetaMask 中选择一个帐户时,该帐户会默默地成为您的 JS 上下文中的 web3.eth.accounts[0],这是 web3.eth.accounts 数组的唯一成员。

    我猜这取决于默认情况下 MetaMask 使用的 web3 提供商。结帐Why does web3.eth.getAccounts() return only 1 account? 问题可以看到一些提供商返回多个帐户,这取决于配置。

    【讨论】:

      【解决方案2】:

      一旦您拨打 MetaMask 的getAccounts(),它会提示用户选择要连接的帐户列表。用户可以选择无(拒绝)、一个或多个。出于安全和隐私方面的考虑,只有用户可以控制,而不是实现请求的开发人员。

      请注意,API 已更改,window.web3 不再可用。您现在必须使用window.ethereum 对象:

      if (typeof window.ethereum !== 'undefined') {
        // connects to MetaMask
        const accounts = await ethereum.request({ method: 'eth_requestAccounts' });
      } else {
        // tell the user to install an `ethereum` provider extension
      }
      

      【讨论】:

        猜你喜欢
        • 2021-11-15
        • 1970-01-01
        • 2015-11-25
        • 1970-01-01
        • 2020-03-31
        • 2021-11-15
        • 2022-01-19
        • 2022-11-16
        • 2021-12-16
        相关资源
        最近更新 更多