Web3js

元遮罩不返回目前地址

  • May 8, 2020

我正在使用 web3.eth.getcoinbase() 函式來獲取目前帳戶的地址,但它返回 null。有人可以幫我弄這個嗎?這是程式碼

web3.eth.getCoinbase(function(err, account) {
 if (err === null) {
   App.account = account;
   $("#accountAddress").html("Your Account: " + account);
 }
});

整個程式碼在這裡

此程式碼已過時。因為 MetaMask 現在需要有權限才能訪問使用者的 MetaMask。

更改此程式碼

if (typeof web3 !== 'undefined') {
 // If a web3 instance is already provided by Meta Mask.
 App.web3Provider = web3.currentProvider;
 web3 = new Web3(web3.currentProvider);
} else {
 // Specify default instance if no web3 instance provided
 App.web3Provider = new Web3.providers.HttpProvider('http://localhost:7545');
 web3 = new Web3(App.web3Provider);
}

使用此程式碼:

if(typeof window !== 'undefined' && typeof window.ethereum !== 'undefined'){
 //getting Permission to access. This is for when the user has new MetaMask
 window.ethereum.enable();
 App.web3Provider = window.ethereum;
 web3 = new Web3(window.ethereum);

}else if (typeof window !== 'undefined' && typeof window.web3 !== 'undefined') {
 web3 = new Web3(window.web3.currentProvider);
 // Acccounts always exposed. This is those who have old version of MetaMask

} else {
 // Specify default instance if no web3 instance provided
 App.web3Provider = new Web3.providers.HttpProvider('http://localhost:7545');
 web3 = new Web3(App.web3Provider);

}

在新的 MetaMask 中沒有像 window.web3 這樣的東西。相反,你有 window.ethereum

如果這不起作用。嘗試從新程式碼中的任何地方刪除單詞“window”。

引用自:https://ethereum.stackexchange.com/questions/83139