metaMask vue 连接钱包


import {
  ethers
} from 'ethers'
import MetaMaskOnboarding from '@metamask/onboarding'
import {
  Message
} from 'element-ui'

async function connectMetaMask () {
  if (!isMetaMaskInstalled()) {
    // 判断是否安装MetaMask扩展工具
    const forwarderOrigin = window.location.origin
    const onboarding = new MetaMaskOnboarding({
      forwarderOrigin
    })
    onboarding.startOnboarding()
    return
  }

  const provider = new ethers.providers.Web3Provider(window.ethereum)
  try {
    const accounts = await window.ethereum.request({
      method: 'eth_requestAccounts'
    });
    const { chainId } = await provider.getNetwork()
    const account = accounts[0];
    window.ethereum.on('networkChanged', () => {
      window.location.reload()
    })
    window.ethereum.on('accountsChanged', () => {
      window.location.reload()
    })
    window.ethereum.on('message', message => {
      console.log('message', message)
    })
    window.ethereum.on('disconnect', () => {
      localStorage.removeItem('walletType')
      localStorage.removeItem('walletTypeVerify')
      window.location.reload()
    })
    return {
      account,
      provider,
      chainId,
    }
  } catch (error) {
    console.log(error)
    Message.error(error)
    return false
  }

  function isMetaMaskInstalled () {
    const { ethereum } = window
    return Boolean(ethereum && ethereum.isMetaMask)
  }
}

export default connectMetaMask
 
 
 
 
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM