使用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 :(得分:0)
您无法将路线添加到Shopify。您将永远不会收到来自/ Content的请求。您显然可以在自己的应用中创建一条路线,并为该路线提供服务。
如果要将内容发送到Shopify,则应使用应用程序代理。您收到一个内容请求,然后以格式为Liquid或JSON的内容满足该请求。