我最近遇到了这样的情况,一个用户卸载了我的Shopify应用程序,并立即重新安装了它。这引起了一个问题,因为我将所有用户存储在一个数据库表中。
登录/安装工作如下:
卸载:
问题是Webhook有时会延迟。如果用户卸载并立即重新安装,“我的应用”将认为该安装是一次登录尝试,并将使用存储在用户数据库中的现在无效的访问令牌。
我想我可以检查一下授权页面的重定向是否包含临时访问令牌,如果是,这将是一个新的安装,但即使应用程序已经安装,似乎也会返回访问令牌。
所以我的问题是:我如何优雅地处理即时重新安装?当然我忽略了一些东西,Shopify API中不可能有这么大的“逻辑错误”吗?
最近我的应用程序也出现了这个问题。Webhooks在过去两个月才开始被延迟,如果大多数应用程序现在没有遇到这种回归错误,我会感到惊讶。
我处理它的方式是——当用户被重定向到应用程序并且旧的db对象/令牌仍然存在于数据库中时,尝试使用您拥有的令牌调用一个虚拟API调用Shopify API(类似于获取店铺详细信息)。如果收到403未经授权的响应,请使用户会话无效并刷新存储的令牌。
另一个问题是,在最初的卸载webhook启动一两分钟后,执行相同的过程-检查403响应。如果你没有得到403,那么你就知道webhook是旧的,不应该被操作,因为如果你得到200 OK,这意味着你的令牌是好的,并且应用程序仍然被安装。
这有点令人费解,它给我的应用程序添加了相当多的代码,但这是我在短时间内唯一能想到的事情——因为商家确实经常快速卸载/重新安装。