我们如何允许用户在与web3网站交互时选择使用哪个浏览器钱包/提供商?这是为基本的HTML / WordPress网站,不使用TypeScript / React等。
根据Coinbase Docs,不需要Coinbase Wallet SDK:“您可以在dapp中使用此提供程序来请求用户的Ethereum帐户,读取链上数据,并让用户签名消息和事务,而无需使用Coinbase Wallet SDK。”
https://docs.cloud.coinbase.com/wallet-sdk/docs/injected-provider
目前,我的集成使用的是MetaMask,没有问题。但是,当尝试选择Coinbase Wallet (浏览器扩展)作为我的提供者时,似乎没有办法这样做。
如果Coinbase钱包扩展设置了window.ethereum.providers,那么就应该有一个window.ethereum对象。然后,您可以遍历每一个,查找MetaMask或Coinbase,并将首选的一个设置为提供程序:
MetaMask conflicting with Coinbase wallet
但是,MetaMask似乎比它更具有优先级,并且在没有.提供程序对象的情况下设置了。
我试图在页面加载期间和之后加载/查找Coinbase钱包提供程序,但它似乎不存在。同样,我假设MetaMask在Coinbase注入甚至存在之前就被设置为提供程序。
是否有一种方法可以让用户设置使用基本web3 JS的提供者/钱包?
发布于 2022-07-02 17:02:56
https://docs.cloud.coinbase.com/wallet-sdk/docs/injected-provider-guidance
const connectWallet = async () => {
if (typeof window.ethereum !== "undefined") {
let provider = window.ethereum;
// edge case if MM and CBW are both installed
if (window.ethereum.providers?.length) {
window.ethereum.providers.forEach(async (p) => {
if (p.isMetaMask) provider = p;
});
}
await provider.request({
method: "eth_requestAccounts",
params: [],
});
}
};
我认为如何实现您的代码有一些错误。上面的代码很清楚。
https://stackoverflow.com/questions/71974763
复制相似问题