- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Ethers.js允许用户将他们的 Metamask 钱包连接到我的应用程序。这是我的代码:
import { ethers } from "ethers"
async function connect() {
const provider = new ethers.providers.Web3Provider(window.ethereum, "any")
await provider.send("eth_requestAccounts", [])
const signer = provider.getSigner()
const address = await signer.getAddress()
// Always prints the address that I first connected with
console.log(address)
}
问题是,一旦我连接了我的一个 Metamask 账户,即使我切换到另一个 Metamask 账户并尝试连接它,我也总是能得到它的钱包地址。
为什么会这样,我应该如何解决这个问题?
最佳答案
获取当前账户,获取eth_requestAccounts
的0
地址:
let accounts = await provider.send("eth_requestAccounts", []);
let account = accounts[0];
要自动更新它,请监听 accountsChanged
事件:
provider.on('accountsChanged', function (accounts) {
account = accounts[0];
});
代码:
import { ethers } from "ethers"
async function connect() {
const provider = new ethers.providers.Web3Provider(window.ethereum, "any");
let accounts = await provider.send("eth_requestAccounts", []);
let account = accounts[0];
provider.on('accountsChanged', function (accounts) {
account = accounts[0];
console.log(address); // Print new address
});
const signer = provider.getSigner();
const address = await signer.getAddress();
console.log(address);
}
我认为问题在于您需要在切换帐户时重新实例化签名者和提供者。
此外,如果我正确阅读了文档,最好在成功调用 eth_requestAccounts
之后实例化签名者。
关于javascript - 即使我切换帐户,Ethers.js 也会返回相同的钱包地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71926834/
我正在开发事件应用程序,在该应用程序中,一旦用户完成预订事件门票,我们必须将该通行证添加到 Apple 钱包。 我正在按照以下链接设计我的通行证,https://developer.apple.com
我开发的应用程序收到来自苹果钱包的警报:“某些通行证接收太多更新,这可能会影响电池生命周期。***通行证的自动更新将被禁用。如果您想要自动更新,请选择重新启用接着说。”我的钱包里只有该应用程序的 2
我正在尝试建立一个网络服务来将折扣信息推送给最终用户。我的问题是,我知道我们可以通过我自己的应用推送优惠券,但是有什么方法可以避免最终用户安装我们的应用吗?有什么可能的方法,我们只使用网络服务从我们的
我是 java card 初学者,从示例中复制了下面的代码。不知何故,我已经能够了解部分代码的工作原理。但是还是对下面的内容感到困惑。 .ownerpin 的工作方式以及设置 pin 的方式和时间.如
我今天买了几个 iBeacon,开始玩 ios SDK。我在一个苹果论坛上读到,我们可以构建并向用户分发 Apple Passbook 通行证,它可以在检测到特定 iBeacon 时向用户显示通知。(
如何分别指定与Coinbase Wallet和Metamask的连接? 现在,当使用 window.ethereum.enable() 时,Metamask 和 Coinbase 钱包扩展弹出窗口。我
我需要为电子商务应用程序集成 Paypal 钱包。有什么方法可以使用java来创建吗?您能否分享任何 api 链接和集成步骤。谢谢。 最佳答案 您必须更具体地说明“paypal 钱包”的含义 - 但如
让 JDBC 瘦客户端识别我的 Oracle 钱包让我遇到了最困难的时期。在 SQLPlus、SQLDeveloper 甚至 .NET 应用程序中使用相同的钱包没有问题。我们将其用作 SSO 机制,即
我目前正在研究 wallt/passbook 的功能,有一件事让我苦恼:“通知”。 有没有什么方法可以使用存折实时推送消息到锁屏?如果我检查已安装的多个通行证(单击信息图标),它会建议打开实时更新和通
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this qu
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
我正在研究Android Google wallet API,所以在这里我想知道这种流程/过程是否可行。 我还想知道另外 1 件事:在我的代码中在哪里设置商家帐户 ID? 我浏览了钱包文档和示例应用程
我正在尝试实现我自己的 NFT 合约,following this tutorial on NEAR , 和 Non-Fungible Token (NEP-171) specifications .
我正在使用命令行运行程序和 Web 应用程序进行 Spring Boot。两个应用都需要用oracle钱包实现,所以我实现了oracle钱包。命令行运行程序能够使用使用 oracle 数据源的 spr
有 2 种 URL 语法,旧语法仅适用于 SID,新语法适用于 Oracle 服务名称。 旧语法 jdbc:oracle:thin:@[HOST][:PORT]:SID 新语法 jdbc:oracle
我有一个使用 Xamarin.Forms 面向 Android 和 iOS 平台的 Xamarin 项目。我进行了搜索,但找不到答案或任何相关信息。 有什么方法可以将 Google 钱包/Androi
我是一名优秀的程序员,十分优秀!