通过web3.js 1.x访问metamask中的帐户

时间:2019-03-27 10:31:06

标签: web3js metamask

我想通过web3.js在我的metamask插件中检索当前选择的帐户。而且我想动态地进行操作,因此当切换到另一个帐户时,应该将其打印到用户界面。

我通过以下方式导入库(测试版37): <script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js@1.0.0-beta.37/dist/web3.min.js"></script>"

使事情更复杂: 1)在勇敢的web3.eth.accounts[0]中,我的当前地址会记录在我的dApp以外的任何其他站点中,但是在这里,它返回“ undefined”。 2)在Chrome(相同版本)中,它将始终返回undefined。

当在web3.js 0.x上构建的其他dApp使用完全相同的代码时,对我来说,它如何返回undefined莫名其妙。

因此,我不能使用以下功能来动态打印当前地址:

var accountInterval = setInterval(function() {
    if (web3.eth.accounts[0] !== userAccount) {
        userAccount = web3.eth.accounts[0];
    }
}, 100);

1 个答案:

答案 0 :(得分:0)

在web3.js 1.x中,您必须使用getAccounts()异步方法,例如如下:

var accounts = await web3.eth.getAccounts();
var userAccount =accounts[0]

PS:其他Dapp中的web3.eth.accounts [0]显示您的帐户,因为它们仍在使用旧的web3.js版本,很可能是Metamask注入的版本