代码之家  ›  专栏  ›  技术社区  ›  Kevin Mangal

如何在Shopify应用程序路由中添加中间件?

  •  0
  • Kevin Mangal  · 技术社区  · 5 年前

    使用Express和Mongoose创建Shopify应用程序。商店的域和访问令牌保存在安装过程的回调路由上的数据库中。应用程序的索引通过以下功能验证:

    const verifyOAuth = query => {
        if (!query.hmac) {
            return false;
        }
    
        const hmac = query.hmac; 
        delete query.hmac;
        const sortedQuery = Object.keys(query).map(key => `${key}=${Array(query[key]).join(',')}`).sort().join('&');
        const calculatedSignature = crypto.createHmac('sha256', config.SHOPIFY_SHARED_SECRET).update(sortedQuery).digest('hex');
        if (calculatedSignature === hmac) {
          return true;
        }
    
      return false;
    }
    

    如何为从mongo数据库访问商店数据的请求创建中间件功能。 前任:

    router.get('/content', auth, (req, res) => {
      const content = Content.findOne({shopifyDomain: 'shopify-domain-here'})
      res.send(content);
    });
    
    var auth = (req, res, next) => {
        // Get shop domain from authentication
        next();
    };
    

    我需要将shop域和hmac添加为对'/content'的每个get请求的查询,还是应该在加载应用程序索引时使用res.setheader将它们设置为头,或者是否有更好的解决方案?

    0 回复  |  直到 5 年前
        1
  •  0
  •   David Lazar    5 年前

    不能添加购物路线。你永远不会有一个来自/内容的请求。显然,你可以在自己的应用程序中创建一个路由,并为该路由提供服务。

    如果你想发送内容到Shopify,你应该使用应用代理。您接收到对内容的请求,然后使用格式为liquid或json的内容来完成该请求。