You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署到Fly.io的Shopify自定义App OAuth回调及API请求失败求助

Shopify自定义App部署到Fly.io后OAuth回调400及会话令牌验证失败问题

问题描述

部署Shopify自定义App到Fly.io后出现两个核心异常:

  1. 开发商店安装完成后,OAuth回调立即返回400错误,响应提示Invalid OAuth callback,回调URL示例:
https://appname.fly.dev/api/auth/callback?code=71bfdaadd63b87eb72d9d3dc516ea1ea&hmac=1efd4ff63ebca8f28c733f464ded354ba2f0995aeb1910114e0139eaefd4cce3&host=YWRtaW4uc2hvcGlmeS5jb20vc3RvcmUvc2hvb3B5bG9vcHkx&shop=shoopyloopy1.myshopify.com&state=920113322594675&timestamp=1676563785
  1. API请求失败,调用/api/路由时返回会话令牌签名验证错误:
Failed to parse session token 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczpcL1wvc2hvb3B5bG9vcHkxLm15c2hvcGlmeS5jb21cL2FkbWluIiwiZGVzdCI6Imh0dHBzOlwvXC9zaG9vcHlsb29weTEubXlzaG9waWZ5LmNvbSIsImF1ZCI6IjU4YTAzZjkwZTk4Yjc5NGRlZmE5NDZlMWZiNmVlMzRiIiwic3ViIjoiNzQ3NzAxNTM2NjEiLCJleHAiOjE2NzY1NjQyMjYsIm5iZiI6MTY3NjU2NDE2NiwiaWF0IjoxNjc2NTY0MTY2LCJqdGkiOiI0OTcyNDEwOC0zNWQ2LTRjODEtOWJkNS0wZWRkMWM4MWIxMDYiLCJzaWQiOiIxOGZmZjg5NTMyZGRiODdiOWQ3OTBhYmY1M2EwOTZiMDNkNmE4ZWU1ZTA0ZmRjZmFmOWUxOWM2OGQxZGFjN2Q2In0.XeuA5W95YjjVLZYOvmRJ9a90xpPNEukhNQ1_z4Kw_xA': signature verification failed

注:本地使用ngrok隧道时所有功能正常,已遵循Shopify官方部署文档,Dockerfile端口与fly.toml配置一致,可提供fly.toml、index.js及Shopify App配置代码。

排查与解决方案

1. 核对OAuth回调URL配置

  • 检查Shopify后台App设置的Allowed redirection URL(s),必须完全匹配Fly.io部署地址:https://appname.fly.dev/api/auth/callback,注意协议(HTTPS)、域名拼写、大小写及末尾无多余斜杠。
  • 用fly apps list命令核对Fly.io应用名称,确认域名无拼写错误。

2. 验证API密钥与环境变量

  • 确保Fly.io环境变量中的SHOPIFY_API_KEY、SHOPIFY_API_SECRET与Shopify后台App的对应值完全一致,无空格或字符遗漏。
  • 执行fly secrets list查看已配置的环境变量,确认配置无误。

3. 修复会话令牌验证问题

  • 信任代理配置:在Express框架中添加代理信任设置,确保应用能识别Fly.io转发的HTTPS协议:
    app.set('trust proxy', true);
    
    若使用Shopify Node.js库,需确保配置中hostName指向正确的Fly.io域名。
  • 会话存储切换:本地开发使用的内存存储不适用于Fly.io多实例环境,需切换为Redis等持久化存储,保证会话信息跨实例共享。
  • 时间同步检查:通过fly ssh console进入实例执行date命令,核对服务器时间与Shopify服务器是否同步,时间偏差过大可能导致令牌过期验证失败。

4. 检查Fly.io网络配置

  • 确认Dockerfile暴露端口与fly.toml中internal_port一致,无端口映射错误。
  • 检查Fly.io自动HTTPS证书是否生效,确保域名已配置合法SSL证书,避免HTTP请求触发OAuth验证失败。

5. 日志定位细节

  • 执行fly logs查看应用实时日志,重点关注OAuth回调阶段的错误堆栈、会话令牌生成/验证过程中的异常信息,快速定位配置遗漏点。

内容的提问来源于stack exchange,提问作者Mastah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:12:18