web3js - 获取 metamask 个人资料图片和名称使用 web3

标签 web3js metamask

我们有可能使用 web3 获取 Metamask 个人资料图片和名称吗? 我正在使用 web3 前端的 react 。 据我所知,我使用 web3.eth.get.Accounts().then(rsp=>rsp[0]) 来获取钱包。谁能给我解释一下?

最佳答案

可能已经太晚了,但我经过一些研究发现了这一点。我将在下面以最好的方式解释它。它处理大多数边缘情况。

第一步

安装:

  • web3(npm install web3)
  • @web3-react/core (npm install @web3-react/core)
  • @web3-react/注入(inject)连接器(npm install @web3-react/注入(inject)连接器)
  • @metamask/jazzicon(npm install @metamask/jazzicon)

第二步

从“@web3-react/core”导入 {useWeb3React}

获取钱包地址

useWeb3React() 是由@web3-react/core 提供的钩子(Hook)。这会返回对象中的 account 和一些其他值。由于您只要求提供名称和图像,因此我将在此处进行说明。

附言没有与任何加密钱包关联的名称。有一个地址。由于 metamask 基于以太坊区 block 链,它的地址将类似于 0x0EfGhjuw....。您可以通过我提到的 account 变量获取它。

const {account, active} = useWeb3React()
useEffect(()=>{
   console.log(account) //prints to console the wallet address of metamask (0xfEgh67...)
// also prints it everytime you change the account in metamask
}, [account])

弄清楚这些事情后,让我们看看如何取回 metamask 的帐户图像。

获取账户图标

从“@metamask/jazzicon”导入 jazzicon

const {account} = useWeb3React()
const avatarRef = useRef()
useEffect(() => {
    const element = avatarRef.current;
    if (element && account) {
        const addr = account.slice(2, 10);
        const seed = parseInt(addr, 16);
        const icon = jazzicon(20, seed); //generates a size 20 icon
        if (element.firstChild) {
            element.removeChild(element.firstChild);
        }
        element.appendChild(icon);
    }
}, [account, avatarRef]);

return(
   <div ref={avatarRef}></div>
)

我们使用 jazzicon 的原因显然是 metamask 也使用 jazzicon 来生成钱包图像。上述逻辑从您传递的钱包地址生成一个整数。该整数决定了您的帐户形象。这非常有效,据我所知,metamask 使用相同的算法来生成帐户图像。

关于web3js - 获取 metamask 个人资料图片和名称使用 web3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71678374/

相关文章:

node.js - web3.js部署时如何获取智能合约地址

node.js - 发送交易结果为 "invalid sender"

blockchain - Metamask 停止注入(inject) web3.js

payload - 我收到错误 : "MetaMask - RPC Error: Error: Error: [ethjs-rpc] rpc error with payload"

javascript - 页面刷新后如何检查Metamask是否连接

node.js - 在 NodeJs 中调用我的契约(Contract)方法时执行恢复

ethereum - 返回错误 : The method web3_clientVersion does not exist/is not available

node.js - web3 对象什么时候被注入(inject)到网页中?

javascript - 无法检索 MetaMask 账户的以太坊余额

javascript - 通过Web3访问智能合约成员功能