在旧版本的MetaMask中是可以获取到的,因为账号地址默认是公开的,在2018年11月2日后MetaMask做了更新默认情况下不公开任何帐户地址,所以要获取账号地址要先请求用户授权。MetaMask重大更新文档
主要把创建 web3 的实例代码稍微改进一下请求用户授权就行了,直接上源码
注:web3.js版本为0.2.0
/* 新版的方式 */
var web3Provider;
if (window.ethereum) {
web3Provider = window.ethereum;
try {
// 请求用户授权
await window.ethereum.enable();
} catch (error) {
// 用户不授权时
console.error("User denied account access")
}
} else if (window.web3) { // 老版 MetaMask Legacy dapp browsers...
web3Provider = window.web3.currentProvider;
} else {
web3Provider = new Web3.providers.HttpProvider('http://localhost:8545');
}
web3js = new Web3(web3Provider);//web3js就是你需要的web3实例
web3js.eth.getAccounts(function (error, result) {
if (!error)
console.log(result)//授权成功后result能正常获取到账号了
});