1

我们如何在页面加载后检测用户何时登录 MetaMask ?是否有必要诉诸轮询,或者是否存在页面可以监听的事件?

4

3 回答 3

3

从 2020 年开始,web3 站点必须通过 请求帐户访问权限ethereum.request({ method: 'eth_requestAccounts' }),然后通过accountsChanged事件监听帐户的更改。

有关详细信息,请参阅MetaMask 文档

于 2017-11-11T21:15:42.450 回答
1

使用 web3 版本 1.0.0,元掩码提供程序公开了一个“更新”事件,您可以在它的 publicConfigStore 上收听。

web3.currentProvider.publicConfigStore.on('update', callback);

每当这些属性发生变化时,您的回调将传递一个带有“selectedAddress”和“networkVersion”的对象。

于 2018-05-21T04:56:36.340 回答
1

通过请求帐户访问'eth_requestAccounts'并不是您能做的最好的事情,因为这将继续在元掩码中添加请求(性能不佳)和糟糕的用户体验(弹出窗口 + 通知)

方法是通过

const isUnlocked = await window?.ethereum?._metamask.isUnlocked();
console.debug({ isUnlocked });
于 2022-03-03T13:03:56.357 回答