我最近遇到了用户卸载我的 Shopify 应用程序并立即重新安装它的情况。这导致了一个问题,因为我将所有用户都存储在数据库表中。
登录/安装工作如下:
- 用户告诉我他的商店 URL
- 我将用户转发到 example.myshopify.com/admin/oauth/authorize,其中授予我的应用程序访问权限
- 我检查该商店 URL 是否已存储在我的本地用户数据库中
- 如果不是:我请求永久访问令牌并将用户转发到计划选择页面
- 如果是:我从用户数据库获取存储的永久访问令牌并将用户登录到我的应用程序
卸载:
- 用户在他的 Shopify 后端卸载我的应用
- Shopify 向我的应用发送 webhook
- 我从用户数据库中删除了该用户的数据
问题是 webhook 有时会延迟。如果用户卸载并立即重新安装,我的应用程序会认为安装是一次登录尝试,并将使用存储在用户数据库中的现在无效的访问令牌。
我想我可以检查来自授权页面的重定向是否包含临时访问令牌,如果是,这将是一个新安装,但即使已经安装了应用程序,似乎也会返回访问令牌。
所以我的问题是:如何优雅地处理即时重新安装?当然,我忽略了一些东西,Shopify API 中不可能有这么大的“逻辑错误”吗?