Доступ к аккаунтам в метамаске через web3.js 1.x - PullRequest
0 голосов
/ 27 марта 2019

Я хочу получить выбранную учетную запись в моем плагине метамаски через web3.js. И я хочу сделать это динамически, поэтому при переключении на другую учетную запись она должна быть напечатана в пользовательском интерфейсе.

Я импортирую библиотеку (beta.37) через: <script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js@1.0.0-beta.37/dist/web3.min.js"></script>"

Чтобы сделать вещи более сложными: 1) В Brave web3.eth.accounts[0] будет регистрировать мой текущий адрес на любом другом сайте, кроме моего dApp, но здесь он возвращает «неопределенное». 2) в Chrome (та же сборка) он всегда возвращает undefined.

Для меня необъяснимо, как он может вернуть undefined, когда другие dApps, созданные на web3.js 0.x, используют тот же самый код.

Следовательно, я не могу использовать следующую функцию для динамической печати текущего адреса:

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

1 Ответ

0 голосов
/ 28 июня 2019

В web3.js 1.x вы должны использовать асинхронный метод getAccounts (), например:

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

PS: web3.eth.accounts [0] в других Dapps показывает вашу учетную запись, потому что онивсе еще используют старую версию web3.js, скорее всего, ту, что была введена Metamask

...