如何连接Metamask或Coinbase钱包?

3
如何单独指定与 Coinbase 钱包和 Metamask 的连接?
目前在使用 window.ethereum.enable() 时,同时会弹出 Metamask 和 Coinbase 钱包扩展。我想要两个单独的按钮,一个是 Metamask,另一个是 Coinbase 钱包。
我的代码:
const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
const web3 = createAlchemyWeb3(alchemyKey);

export const connectWallet = async () => {
    if (window.ethereum) { //check if Metamask is installed 
      try {
            const address = await window.ethereum.enable(); //connect Metamask
      }
   }
})

你解决了吗?我正在尝试获得相同的行为。 - Milton Rincon
2个回答

4

根据这个讨论,似乎你可以使用不同的Metamask请求方法来强制选择连接:

  const connectWallet = async () => {
    if (window.ethereum) { //check if Metamask is installed 
      try {
        const address = await window.ethereum.request({
          method: 'wallet_requestPermissions',
          params: [{ eth_accounts: {}}]
        }); 
      } catch (error) {
        console.log(error);
      }
    }
  }

wallet_requestPermissions 似乎可以解决问题。


你知道如何从这个方法中获取签名者和提供者信息吗?@thatguyintech - cormacncheese

0

对我有效的方法是找到MetaMask提供程序,并将其设置为window.ethereum.selectedProvider - 这个解决方案来自于这个答案

const {ethereum} = window;
const metamaskProvider = ethereum?.providers?.find(p => p.isMetaMask);

if (metamaskProvider && typeof ethereum.setSelectedProvider === 'function') {
  ethereum.setSelectedProvider(metamaskProvider);
}

直接设置ethereum.selectedProvider = metamaskProvider不会正常工作。

请注意,只有在安装了Metamask和Coinbase钱包时才会同时出现providersselectedProvider,如果只安装其中一个,则情况不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接