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

如何让eBay向Shopify Node应用发送OAuth令牌?

解决Shopify Node应用模板允许eBay OAuth回调访问的问题
  • 跳过指定端点的Shopify认证拦截
    Shopify Node模板默认会对所有路由应用Shopify的认证中间件,外部请求(比如eBay的回调)没有Shopify的认证信息,自然会被拦截。你需要在web/index.js里,给/ebay/auth/accepted端点单独配置,不经过Shopify的认证中间件。

    举个例子,原来的路由如果是全局挂载认证中间件:

    app.use(shopify.authenticate.admin());
    app.get('/ebay/auth/accepted', (req, res) => { /* 你的逻辑 */ });
    

    改成将认证中间件只应用到需要的路由,给eBay回调路由放行:

    // 仅给需要Shopify认证的路由挂载中间件
    app.get('/', shopify.authenticate.admin(), (req, res) => { /* 原首页逻辑 */ });
    // eBay回调路由跳过Shopify认证
    app.get('/ebay/auth/accepted', (req, res) => {
      // 这里处理eBay返回的授权码,请求访问令牌
      const { code } = req.query;
      // 调用eBay令牌接口,将令牌关联到当前店铺存储(比如数据库或Shopify会话)
      res.send('eBay授权完成');
    });
    

    要是用了路由分组,确保这个回调路由不在认证中间件的作用范围内即可。

  • 确认开发环境的可访问性
    npm run dev生成的可共享URL是ngrok提供的,只要ngrok进程没中断,这个URL就能被外部访问。注意每次重启dev服务,ngrok URL可能会变化,要同步更新eBay开发者后台的重定向地址。

  • 令牌的存储处理
    拿到eBay的令牌后,建议关联到当前Shopify店铺的会话或者数据库中(绑定店铺ID)。Shopify的会话是加密的,你可以直接用req.session存储:

    req.session.ebayTokens = { access_token: 'xxx', refresh_token: 'yyy' };
    

    后续调用eBay API时,从会话或数据库取出令牌即可。

  • 测试端点有效性
    修改路由后,直接在浏览器输入[你的ngrok URL]/ebay/auth/accepted,如果能正常返回响应,说明认证拦截已经解除。再去eBay后台配置这个URL作为重定向地址,测试完整的OAuth流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:35:45