Metamask 多个获取所有连接的帐户

Posted

技术标签:

【中文标题】Metamask 多个获取所有连接的帐户【英文标题】:Metamask multiple getting all connected accounts 【发布时间】:2021-09-22 03:25:09 【问题描述】:

我正在尝试获取已连接到我的网站的所有 Metamask 钱包,但是,我只能获取默认钱包,我正在尝试这样的事情:

async function getWallets()
    if(!window.ethereum)
      console.log('!!!!! Non-Ethereum browser detected.');
    
    let w3 = new Web3(window.ethereum);
    await window.ethereum.enable();
    w3.eth.getAccounts((err, accounts) => 
      console.log('accounts', accounts)
    );
  

启用呼叫后,我将多个钱包连接到该站点,但是当我尝试获取帐户时,我只收到默认帐户。

【问题讨论】:

据我所知,没有办法获取所有帐户,MetaMask 只是返回活动帐户。这取决于您的情况,可能是您需要对其进行硬编码,或者检测 MetaMask 文档中提到的帐户更改:docs.metamask.io/guide/ethereum-provider.html#accountschanged 【参考方案1】:

在过去,支持多个帐户。现在,出于隐私原因,钱包只返回默认连接的帐户。

【讨论】:

【参考方案2】:

这是基于安全原因的 MetaMask 设计决策,请参阅 doc,尽管原始 EIP-1102 要求 eth_requestAccounts 方法在获得批准后返回一个或多个帐户。

【讨论】:

以上是关于Metamask 多个获取所有连接的帐户的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Metamask 正确更新和检索帐户信息

为啥我无法使用 Next.js 的 getInitialProps 获取我的 Metamask 帐户地址?

如何从单个谷歌帐户的多个谷歌日历中获取所有事件?

如何使用以太坊从reactjs中的metamask帐户注销

如何高效地从多个表中查询子记录?

从办公室到多个帐户的 *** 对等的最佳实践