Shopify:我如何处理卸载后立即重新安装? [英] Shopify: How can I handle an uninstall followed by an instant re-install?

查看:16
本文介绍了Shopify:我如何处理卸载后立即重新安装?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近遇到过这样的情况,一个用户卸载了我的Shopify应用程序,然后立即重新安装。这导致了问题,因为我将所有用户存储在一个DB表中。

登录/安装工作方式如下:

  1. 用户告诉我他的商店URL
  2. 我将用户转发到 example.myshop ify.com/admin/oauth/授权访问位置 到我的应用
  3. 我检查商店URL是否已存储在我本地 用户数据库
    • 如果没有:我请求永久访问令牌并将 用户进入计划选择页面
    • 如果是:我从用户数据库获取存储的永久访问令牌,并将用户登录到我的应用程序

卸载:

  1. 用户在其Shopify后端卸载我的应用程序
  2. Shopify向我的应用程序发送网络挂钩
  3. 我从用户数据库中删除该用户的数据

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

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

因此,我的问题是:如何才能优雅地处理即时重新安装?我肯定忽略了一些东西,Shopify API中不可能有这么大的"逻辑错误"?

推荐答案

我的应用程序最近也遇到了此问题。Webhooks是在最近两个月才开始延迟的,如果现在大多数应用程序都没有受到这种回归错误的影响,我会很惊讶的。

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

另一个问题是,一两分钟后,当最初的卸载Web钩会触发时,执行相同的过程-检查是否有403响应。如果您未获得403,则您知道网络挂钩已过时,不应对其执行操作,因为如果您获得200 OK,则表示您的令牌是好的,并且应用程序仍在安装。

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

这篇关于Shopify:我如何处理卸载后立即重新安装?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆