我正在构建一个去中心化应用程序,用户可以将他们的加密货币钱包(Metamask)连接到我的网站。
他们可以通过单击按钮发起连接请求。成功后,钱包已连接,我的网站可以与其交互。
有什么方法可以发起断开连接请求吗?类似于“注销”按钮。目前,用户必须在 Metamask 设置中手动断开钱包连接,这不是一个简单的过程。
这不是您可能希望得到的答案:这是不可能的。
出于安全和隐私考虑,连接/断开连接功能完全掌握在用户手中。您可以要求钱包提示用户连接网站,但没有提示用户断开连接的功能。
以编程方式重置帐户数组不会断开钱包连接,即使 Pancake Swap 等某些实现表明情况确实如此;他们只是假装断开连接。
以下是我用来断开您连接的帐户(假设您只有一个)与应用程序的连接的方法:
await window.ethereum.request({
method: "eth_requestAccounts",
params: [{eth_accounts: {}}]
})
来自此:https://github.com/MetaMask/metamask-extension/issues/8990
const accounts = await window.ethereum.request({ method: "wallet_requestPermissions", params: [{ eth_accounts: {} }] }).then(() => ethereum.request({ method: 'eth_requestAccounts' })) const account = accounts[0]
await window.ethereum.request({
method: 'wallet_revokePermissions',
params: [
{
eth_accounts: {},
},
],
});