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