Shopify:如何处理卸载然后立即重新安装?

2024-02-08

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

登录/安装工作如下:

  1. 用户告诉我他的商店网址
  2. 我将用户转发至 example.myshopify.com/admin/oauth/authorize 授予访问权限的位置 到我的应用程序
  3. I check if that shop URL is already stored in my local user DB
    • 如果不是:我请求永久访问令牌并转发 用户进入计划选择页面
    • 如果是:我从用户数据库获取存储的永久访问令牌并将用户登录到我的应用程序

卸载:

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

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

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

所以我的问题是:如何优雅地处理即时重新安装?当然,我忽略了一些事情,Shopify API 中不可能存在如此巨大的“逻辑错误”?


最近我的应用程序也遇到了这个问题。 Webhooks 在过去 2 个月才开始出现延迟,如果大多数应用程序现在没有遭受此回归错误的困扰,我会感到惊讶。

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

另一个问题是,一两分钟后,当原始卸载 Webhook 触发时,执行相同的过程 - 检查 403 响应。如果你DON'T得到 403,那么您就知道 webhook 是旧的,不应该对其进行操作,因为如果您得到 200 OK,则意味着您的令牌是好的并且该应用程序仍然安装。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Shopify:如何处理卸载然后立即重新安装? 的相关文章

  • shopify theme 跨境电商开发 liquid

    shopify theme 多语言国际化开发 shopify theme 跨境电商开发 liquid 本地编辑shopify主题的方式一 shopify cli 的命令 最近有有一个叫做shopify的跨境电商的东西需要开发一些主题和模板
  • shopify网站如何提高视觉冲击力

    1 首屏使用视频 2 页面引入酷炫动画 3 使用对比强烈的色彩
  • shopify店铺 怎么样 shopify建站 我的使用经验

    公司从19年底开始使用shopify建站 进行品牌宣传和商城交易的相关业务 我个人作为开发也从开发shopify的工作中学习到了很多东西 这个框架非常灵活 官方也提供了很多接口 优点 主题编辑器 可以实时预览编辑 开发灵活 可扩展性强 插件
  • Shopify商品置顶功能

    Shopify商品置顶功能 商品置顶功能描述 通过在商品列表页为链接添加参数的方法实现置顶某个或多个商品的功能 需按以下步骤将目标代码添加到目标位置 目标代码 assign handles assign handleSize 0 if cu
  • 日期比较逻辑/液体模板过滤器

    我正在尝试创建一个类似 预购 的机制 其中我的 Shopify Liquid 模板的某些元素仅在当前日期大于或小于元字段中指定的日期时显示 截至目前 这就是我所拥有的 包括逻辑 p Today now date d m Y p p Rele
  • 使用 ruby​​gem 访问 Shopify API 时出现 SSL_connect 错误

    我在使用 shopify api gem 访问 Shopify API 时遇到问题 发生的情况如下 gt gt require shopify api gt false gt gt ShopifyAPI Base site https us
  • Shopify 变体

    想知道是否有任何方法可以将变体分配给自定义无线电输入 我想为 2 天 3 天和标准运输设置不同费率的分级运输 我可以使用变体来做到这一点 但下拉菜单对我不起作用 我想要日期信息和日期选择器 以便选择首选发货日期 并将其全部显示在带有其余交付
  • 调用 Shopify 设置时 Liquid if 语句中的变量

    我认为这很容易解决 但我试图将变量放在液体语句中 我有我的变量 loop index 我希望它在这个声明中 if settings dropdown loop index select 我尝试将其绕过 但没有成功 基本上应该是setting
  • 使用 Shopify API 请求在自定义网站上使用 JavaScript 获取所有产品

    我有一个基于 node js 的自定义网站 我希望能够通过 GET 请求获取我的所有产品 店铺化购买按钮 https help shopify com en manual sell online buy button create buy
  • 如何处理 Shopify API 与 Shopify gem 的连接?

    您好 我正在我的 Shopify 应用中使用 Shopify gem 我正在寻找有关如何处理与 Shopify 的 API 连接的建议 我正在使用 webhooks 和delayed jobs 所以我需要一种方法来打开控制器外部的连接 目前
  • 结账时修改 Shopify 运费

    Is there a possibility that we could add a custom shipping price at checkout through an API call or script 我想根据一些规则修改价格
  • 无法获取店铺名称

    在以前的版本中我用来获取当前商店名称是这样的 router get api app async ctx gt let shop ctx session shop 但是 在新版本中 我无法使用 ctx session shop 获取当前商店名
  • 如何更改 Shopify 主题名称

    有谁知道如何更改 Shopify 主题的名称 我似乎找不到该文件 我尝试使用 Wingrep 搜索并查找主题名称 但没有得到任何结果 找到了 主题选项中显示的主题名称由主题文件夹的名称定义 因此 如果您想为主题指定自定义名称 请在将主题上传
  • 如何使用 ScriptTags 为 shopify 开发 Rails 应用程序

    我在 Heroku 中部署了一个 Shopify 应用程序 并使用 Rails 开发 我需要从任何 Shopify 商店的前端调用 JavaScript 函数 我读过这篇文章 http www shopify com technology
  • 使用 cURL 访问 API 可以正常工作,但使用 Fetch API 则不行 [重复]

    这个问题在这里已经有答案了 我知道这个问题已经得到解决lotSO 上的次数 但所有答案大多都是 向服务器添加某个标头 在这种情况下 API Shopify 工作得非常好 并且可以通过curl轻松访问 我已经使用 Axios 库和 Fetch
  • 如何在 Shopify 中随机化相关产品

    我有标准的 Shopify 主题 Minimal 产品被分配到集合中 每个产品上的相关项目仅显示在相关集合中找到的前 4 个项目 由于每个系列中有很多商品 很多时候数百种产品中的相关商品都是完全相同的 如何编辑代码以随机化相关产品的结果 斯
  • Postmates 与 Shopify Shipping/Carrier 服务集成

    我们正在寻求集成此应用程序 https postmates com developer docs https postmates com developer docs进入我们的 Shopify 平台 有关其工作原理 请检查 http blo
  • 液体字符串中的转义字符

    我正在尝试将包含各种尺寸的标签列表放在一起 在 Shopify 中使用 Liquid 尺寸使用单引号和双引号表示英寸和英尺 因为它同时使用两者 所以会导致字符串正确关闭的问题 我尝试过使用标准转义字符 但这似乎不起作用 是否可以在 Liqu
  • 如何延迟加载嵌入在 iframe 上的 YouTube 视频?

    如何将延迟加载应用于iframe嵌入视频 我尝试添加loading eager loading auto and loading lazyload 您可以使用srcdoc你里面的属性iframe标签来加载图像 请参阅以下示例作为参考
  • 如何使用 Shopify API 将商品添加到购物车

    我正在使用 Shopify API 开发自定义网络应用程序 这里的想法是使用应用程序作为独家店面 只需向 Shopify API 发出请求 我已在我的 Shopify 帐户中设置了一个私人应用程序来执行此操作 我从 api 提取产品没有问题

随机推荐

  • MySql查询缓存中的“query_cache_wlock_invalidate”有什么用?

    在添加MySql Query Cache的概念时 我们有一个名为 query cache wlock invalidate 的参数 我想知道这个参数有什么用 Thanks 当您在查询缓存中进行查询时 通常会返回缓存的内容 即使该查询使用另一
  • 无法提交 Hibernate 事务;嵌套异常是 org.hibernate.Transaction 异常:JDBC 提交失败

    我在应用程序中使用 Windows Azure SQL Server 当我连接到应用程序时 它显示以下错误 org springframework transaction TransactionSystemException Could n
  • UIImageView内容模式

    蓝线是图像视图的边界 UIImageView s contentMode is UIViewContentModeScaleAspectFit 我想保持原始图片的比例 怎样才能让图片的左边缘在UIImageView的左边缘 但不喜欢UIVi
  • Android 上的 PhoneGap 不会加载外部脚本

    我正在制作一个简单的应用程序来加载谷歌地图 但问题是每次我加载这个 它无法在我的 Android 模拟器上运行 而在桌面上则可以正常运行 如何让 Phonegap 或 Android 允许外部脚本工作 加载 更新 我总是收到此错误 应用程序
  • 我无法在 Android 真实手机上获取位置

    public class LocationService extends Service private Handler mHandler new Handler private Timer mTimer null private int
  • 有 typeid 可供参考吗?

    我正在寻找一种获取类型名称的方法 类似于typeid但仅供参考 根据这一页 http en cppreference com w cpp language typeid typeid删除引用 如果 type 是引用类型 则结果引用引用的类型
  • 在 C# 中生成运行哈希(或校验和)?

    Preface 我正在执行具有验证提交阶段的数据导入 这个想法是 第一阶段允许从各种来源获取数据 然后在数据库上运行各种插入 更新 验证操作 提交被回滚 但会生成 验证哈希 校验和 提交阶段是相同的 但是 如果 验证哈希 校验和 相同 则将
  • 使用 tfds.load() 无法访问 CelebA 数据集

    我正在尝试在深度学习项目中使用 CelebA 数据集 我有来自 Kaggle 的压缩文件夹 我想解压缩 然后将图像拆分为训练 测试和验证 但后来发现这在我的设备上是不可能的不那么强大 system 因此 为了避免浪费时间 我想使用 Tens
  • 为什么安装opencv后缺少cv2.so?

    今天我将opencv 2 4 4安装到Ubuntu 12 10 但是 import cv2 不起作用 root python Python 2 7 3 default Sep 26 2012 21 53 58 GCC 4 7 2 on li
  • Hello-jni 示例在 Android Studio 2.0 预览版中不起作用

    我正在尝试实施hello jni sample https github com googlesamples android ndk tree master hello jni进入我的项目 我有Gradle2 8 和 com android
  • 切换按钮折叠在 Bootstrap 导航栏中不起作用

    当导航栏折叠时 我的切换按钮不起作用 我已经检查了数据目标几次 看起来没问题 这是我的代码 div class navbar navbar fixed top navbar inverse div class container div d
  • REST API:请求正文为 JSON 或纯 POST 数据?

    我目前正在构建一个 REST API 当前所有 GET 方法都使用 JSON 作为响应格式 POST 和 PUT 操作的最佳实践是什么 在请求正文中使用 JSON 还是纯 POST 我找不到任何关于此事的信息 例如 我看到 Twitter
  • 使用 appcfg.py 时出现意外的关键字参数“context”

    我尝试通过 appcfg py 更新 Google App Engine 上的项目 C gt C Program Files x86 Google google appengine appcfg py update c secondApp
  • 单击时按钮周围出现不需要的轮廓或边框

    我的网站上有一个样式按钮 但是当我单击它时 它会创建一个不需要的边框或轮廓 我不知道是哪个 我怎样才能删除那个边框 以下是与该按钮相关的所有代码 button border hidden cursor pointer outline non
  • UIGraphicsGetImageFromCurrentImageContext() - 内存泄漏

    我正在打开相机UIImagePickerControllerSourceTypeCamera和一个习惯cameraOverlayView这样我就可以拍摄多张照片 而无需 使用照片 步骤 这很好用 但是保存照片功能存在内存泄漏 通过大量的调试
  • 建设 DAL。使用 EDM(来自数据库)

    我必须开发一个在 Windows wpf 中工作的 lob 应用程序 但应该以两种方式部署 使用本地数据库 同一台计算机 具有远程数据库 在同一网络中 我将使用从数据库生成的实体数据模型 dbcontext EF 4 0 VS2012 sq
  • NSURLConnection 返回错误而不是 401 响应

    我有一个 Web API 对于特定请求 如果一切正常 则返回状态代码 200 如果用户未根据授权令牌登录 则返回 401 如果响应状态为 200 则一切正常 但如果响应状态为 401 则似乎无法正常工作 返回代码为 1012 的连接错误 而
  • 使用指向非常量指针和指向相同地址的常量参数的指针的函数调用

    我想编写一个函数 输入一个数据数组并使用指针输出另一个数据数组 我想知道如果两者都结果是什么src and dst指向相同的地址 因为我知道编译器可以针对 const 进行优化 这是未定义的行为吗 我标记了 C 和 C 因为我不确定它们之间
  • 为什么 ProcessPoolExecutor 一直运行

    我尝试使用Python进程池执行器要计算一些 FFT 并行 请参见以下代码 import concurrent futures import numpy as np from scipy fft import fft def fuc sig
  • Shopify:如何处理卸载然后立即重新安装?

    我最近遇到过这样的情况 用户卸载了我的 Shopify 应用程序并立即重新安装 这导致了一个问题 因为我将所有用户存储在数据库表中 登录 安装工作如下 用户告诉我他的商店网址 我将用户转发至 example myshopify com ad