Wallet连接:请求的帐户和/或方法未经用户授权

c3frrgcw  于 2022-09-21  发布在  React
关注(0)|答案(1)|浏览(599)

我在Wallet Connect (Chrome) + MetaMask (mobile)MetaMask (Chrome)上使用完全相同的钱包来调用我的智能合同的一个铸币函数。对于MetaMask (Chrome),该过程进行得很顺利;但对于Wallet Connect (Chrome) + MetaMask (mobile),会出现以下错误:

inpage.js:1 MetaMask - RPC Error: The requested account and/or method has not been authorized by the user.

我只是被利用了

const contract = new web3.eth.Contract(
  abi,
  contractAddress
);

contract.methods.mintBatch(something).send({from: walletId, value: value}, (err, res) => callback(err, res));

同时具有Wallet Connect (Chrome) + MetaMask (mobile)MetaMask (Chrome)。是否需要为Wallet Connect进行额外设置?

ttisahbt

ttisahbt1#

事实证明,我需要使用以下代码来取代常见的Web3,才能使其运行:

const provider = new WalletConnectProvider({
  infuraId: process.env.INFURA_PROJECT_ID, // Required
});

walletConnectWeb3 = new Web3(provider as any);

contractSubstitute = new walletConnectWeb3.eth.Contract(abi, contractAddress);

contractSubstitute.methods.mintBatch(something).send({from: walletId, value: value}, (err, res) => callback(err, res));

Web3必须是walletConnect Web3。

更新:这个解决方案从我实施的第二天起就停止工作了。不知道为什么。一旦我弄清楚了真正的工作方式,我就会接受这个答案。

相关问题