【问题标题】:Detecting on the browser when user switches Phantom wallet accounts用户切换 Phantom 钱包账户时在浏览器上检测
【发布时间】:2021-12-26 14:55:43
【问题描述】:

所以我有一个带有 nextjs 的 react 应用程序,当用户使用 Phantom 钱包扩展程序并切换帐户时,我需要在其中获取事件触发器。我在他们的文档上找不到任何相关内容:https://docs.phantom.app/

我想知道是否有人遇到过这个问题。基本上我有 window.solana 对象,但它没有触发用户何时切换帐户

【问题讨论】:

    标签: reactjs solana


    【解决方案1】:

    因此 Phantom 本身不会在其 window.solana 对象上公开任何帐户切换特定 API。

    不过,您可以采取一些技巧来找出帐户何时切换。

    您可以连续轮询当前连接的帐户并将 publicKey 设置为某个变量。当 publicKey 改变时,你可以触发你的事件。

    示例伪代码:

    let currentKey = '';
    
    poll(() => {
      if (/* wallet available and connected */) {
        await /* Action that updates publicKey */
        if (currentKey !== wallet.publicKey.toBase58()) {
          currentKey = wallet.publicKey.toBase58();
          this.publicKey = wallet.publicKey;
          this.emit('change')
        }
      }
    })
    

    您可以找到我们目前在钱包适配器上查看此流程的文章和 PR here

    【讨论】:

    • 我确实有一个问题,您使用什么方法来更新 publicKey 或 window.solana 对象?这样您就获得了新帐户
    • 因为是这里的问题,所以没有更新功能
    • @SergiuTonț 当您与 Phantom 进行即时连接时,它将更新 window.solana 对象中的 publicKey 以匹配钱包中显示的内容。所以在 Phantom 的情况下,这将是 docs.phantom.app/integrating/…
    猜你喜欢
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 2010-11-05
    相关资源
    最近更新 更多