提问者:小点点

Shopify:如何处理卸载后立即重新安装?


我最近遇到了这样的情况,一个用户卸载了我的Shopify应用程序,并立即重新安装了它。这引起了一个问题,因为我将所有用户存储在一个数据库表中。

登录/安装工作如下:

  • 用户告诉我他的店铺URL
  • 我将用户转发给示例。神秘化。com/admin/oauth/authorize,授予我的应用访问权限
  • 我检查该商店URL是否已存储在本地用户数据库中
    • 如果没有:我请求永久访问令牌并将用户转发到计划选择页面
    • 如果是:我从用户数据库获取存储的永久访问令牌,并将用户登录到我的应用程序

    卸载:

    1. 用户在其Shopify后端卸载我的应用程序

    问题是Webhook有时会延迟。如果用户卸载并立即重新安装,“我的应用”将认为该安装是一次登录尝试,并将使用存储在用户数据库中的现在无效的访问令牌。

    我想我可以检查一下授权页面的重定向是否包含临时访问令牌,如果是,这将是一个新的安装,但即使应用程序已经安装,似乎也会返回访问令牌。

    所以我的问题是:我如何优雅地处理即时重新安装?当然我忽略了一些东西,Shopify API中不可能有这么大的“逻辑错误”吗?


共1个答案

匿名用户

最近我的应用程序也出现了这个问题。Webhooks在过去两个月才开始被延迟,如果大多数应用程序现在没有遇到这种回归错误,我会感到惊讶。

我处理它的方式是——当用户被重定向到应用程序并且旧的db对象/令牌仍然存在于数据库中时,尝试使用您拥有的令牌调用一个虚拟API调用Shopify API(类似于获取店铺详细信息)。如果收到403未经授权的响应,请使用户会话无效并刷新存储的令牌。

另一个问题是,在最初的卸载webhook启动一两分钟后,执行相同的过程-检查403响应。如果你没有得到403,那么你就知道webhook是旧的,不应该被操作,因为如果你得到200 OK,这意味着你的令牌是好的,并且应用程序仍然被安装。

这有点令人费解,它给我的应用程序添加了相当多的代码,但这是我在短时间内唯一能想到的事情——因为商家确实经常快速卸载/重新安装。