如何添加中间件以使应用程序路线购物化?

时间:2019-03-12 02:53:15

标签: node.js mongodb express mongoose shopify

使用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将它们设置为标头,或者是否存在更好的解决方案?

1 个答案:

答案 0 :(得分:0)

您无法将路线添加到Shopify。您将永远不会收到来自/ Content的请求。您显然可以在自己的应用中创建一条路线,并为该路线提供服务。

如果要将内容发送到Shopify,则应使用应用程序代理。您收到一个内容请求,然后以格式为Liquid或JSON的内容满足该请求。