web3.eth.getAccounts获取账号地址为空解决办法

在旧版本的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能正常获取到账号了
  });

猜你喜欢

转载自blog.csdn.net/weixin_36941283/article/details/103778439