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

AWS API Gateway环境下如何用Shopify Node API从会话获取access token

解决方案

方案1:构造兼容参数调用loadCurrentSession

Shopify.Utils.loadCurrentSession 本质只需要从请求对象中提取授权头、Cookie等信息,不会对响应对象执行实际的返回操作,你只需要从Lambda入参中构造兼容的req对象,再Mock一个空的res对象即可:

  • 第一步:从API Gateway event构造req对象
const req = {
  headers: event.headers,
  query: event.queryStringParameters || {},
  cookies: event.cookies || [], // HTTP API v2集成可直接取,REST集成需要自行从headers.Cookie解析
  method: event.requestContext.http.method
}
  • 第二步:Mock res对象,仅需实现工具方法依赖的几个空函数即可
const res = {
  getHeader: () => undefined,
  setHeader: () => {},
  end: () => {}
}
  • 第三步:正常调用方法即可
const session = await Shopify.Utils.loadCurrentSession(req, res)

方案2:直接用自定义JWT验证逻辑获取AccessToken(更适配无服务器环境)

你已经实现了会话令牌的JWT解码能力,可以直接用这个逻辑绕开对Express风格参数的依赖:

  1. 从请求头Authorization中提取Bearer令牌,用你的自定义函数解码得到JWT payload,结构如下:
{
  "iss": "店铺的后台域名",
  "dest": "店铺的域名",
  "aud": "接收应用的API key",
  "sub": "会话对应的用户ID",
  "exp": "会话令牌过期时间",
  "nbf": "会话令牌生效时间",
  "iat": "会话令牌签发时间",
  "jti": "安全随机UUID",
  "sid": "用户+应用维度的唯一会话ID"
}
  1. 用解码得到的iss(店铺域名)和sid(会话ID)作为查询条件,直接从你存储AccessToken的数据库中查询对应的记录,即可拿到可用的AccessToken。

注意事项

如果你的API Gateway用的是v1 REST集成,Cookie不会自动拆分到event.cookies字段,需要你自行从event.headers.Cookie字符串中解析出各个Cookie键值对,再赋值给req.cookies即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:57:04