Со 2 ноября MetaMask больше не будет показывать учетные записи пользователей по умолчанию, и мы должны это сделать. Я не понимаю, как мы должны интегрировать это в наши децентрализованные приложения.
Например, у меня есть стандартный файл web3.js со следующим кодом:
import Web3 from 'web3';
let web3;
if (typeof window !== 'undefined' && typeof window.web3 !== 'undefined') {
// metamask is running
web3 = new Web3(window.web3.currentProvider);
} else {
//user is not running metamask
// create provider through infura
const provider = new Web3.providers.HttpProvider(
// pass url of remote node
'https://rinkeby.infura.io/v3/censored'
);
web3 = new Web3(provider);
}
export default web3;
Должны ли быть изменения в файле web3.js? Или мне следует создать кнопку на веб-сайте, которую пользователь должен нажать, чтобы получить доступ к своей учетной записи MetaMask?
Решение найдено! Скорее всего, у вас есть файл web3.js, который вы экспортируете в приложение по умолчанию. Решение простое:
import Web3 from 'web3';
let web3;
if (window.ethereum) {
// metamask is available
window.ethereum.enable();
web3 = new Web3(window.web3.currentProvider);
} else {
//user is not running metamask
// create provider through infura
const provider = new Web3.providers.HttpProvider(
// pass url of remote node
'https://rinkeby.infura.io/v3/censored'
);
web3 = new Web3(provider);
}
export default web3;
Оливерс Де Абреу
ГрандФлит
Юлиан
Микки Сокачи