Shopify:我该如何处理卸载,然后瞬间重新安装?(Shopify: How can I hand

2019-08-07 12:01发布

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

登录/安装的工作原理如下:

  1. 用户告诉我,他的店铺网址
  2. 我转发用户example.myshopify.com/admin/oauth/authorize那里获得授予我的应用程序
  3. 我检查,如果那家商店的网址已储存在我的本地用户数据库
    • 如果还没有,我申请永久性访问令牌和用户转发给计划选择页面
    • 如果是的话:我从用户数据库存储的永久访问令牌和用户登录到我的应用程序

卸载:

  1. 用户卸载我的应用程序在他的Shopify后端
  2. Shopify发送一个网络挂接到我的应用程序
  3. 我从用户数据库中删除该用户的数据

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

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

所以我的问题是:我怎样才能妥善地处理即时重新安装? 当然还有那个我俯瞰,不可能有如此巨大的“逻辑错误”的Shopify API中的东西吗?

Answer 1:

我也最近有这个问题,我的应用程序。 网络挂接才开始在过去2个月得到延缓,如果大多数应用程序在那里并没有从这个回归的bug,现在的痛苦我会感到惊讶。

我处理这个问题的方法是 - 当用户被重定向到应用程序和旧的数据库对象/令牌仍然存在于数据库中,尝试调用带有令牌的虚拟API调用Shopify API(像在商店内的细节)你有。 如果你得到一个403未经授权响应,无效用户会话并刷新存储令牌。

另一个问题是,一个或两个时,原来的卸载网络挂接不火分钟后,做同样的程序 - 检查403响应。 如果你没有得到一个403,那么你知道网络挂接是旧的,不应当采取行动,因为如果你得到一个200 OK就意味着你的令牌是好的,该应用程序仍安装。

这是一个有点令人费解并将其添加的代码公平一点我的应用程序,但它是我能想到的在短时间内的唯一的事情 - 因为商家不卸载/快速重新安装相当频繁。



文章来源: Shopify: How can I handle an uninstall followed by an instant re-install?
标签: shopify