首页/安信10平台-安信10娱乐-工会鹊桥网【安信10注册】
2022-11-16 10:29:37
yqs888
0
首页/安信10平台-安信10娱乐-工会鹊桥网【安信10注册】报道,MetaMask 使我们能够访问去中心化应用程序 (dApp),同时使用 MetaMask 钱包提供一种身份验证形式。它提供一键式安全登录流程,允许我们在前端使用以太币访问区块链资源。[1]MetaMask 抽象出微妙的过程,例如在与区块链交互时签署交易,并将您的 MetaMask 的公共地址提供给应用程序。
因此,作为开发者,在构建这些dApps时,难免会出现错误,而这些错误应该得到妥善处理,让开发者和用户都知道哪里出了问题。由于 MetaMask 文档没有针对使用 MetaMask 时可能出现的多种错误的全面而清晰的指南,因此我在此处编制了一份最常见错误及其含义的列表。
4001
当尝试连接到钱包时,如果用户在此界面上的任意位置单击“取消”并终止该过程,则会返回4001错误。
这是错误的 JSON 结构:
'4001': { standard: 'EIP-1193', message: 'User rejected the request.', },
4100
当 dApp 想要对未经授权的帐户采取行动时,会发生此错误。
例如,要执行某些操作(如签名消息),您需要先使用以下eth_requestAccounts方法从 MetaMask 获得帐户权限:
import { ethers } from "ethers";const accounts = await ethereum.request({ method: "eth_requestAccounts", });const address = accounts[0];const provider = new ethers.providers.Web3Provider(ethereum);const signer = provider.getSigner();const signature = await signer.signMessage(address);console.log(signer);
同样,要切换你的钱包链,你需要使用该wallet_switchEthereumChain方法,该方法依次通过 MetaMask 扩展程序请求权限:
// switching the chain for MetaMask walletawait provider.request({ method: "wallet_switchEthereumChain", params: [{ chainId: "0x89" }], });
如果权限被拒绝,钱包将返回此错误:
'4100': { standard: 'EIP-1193', message: 'The requested account and/or method has not been authorized by the user.', },
4200
MetaMask 启用两种方法:受限和不受限。这些方法允许 dApp 执行连接到钱包、签署交易以及添加或切换网络等操作。