我已经为使用node.js的人开发了几个Shopify定制应用程序,老实说,这是一个反复试验的过程。经过反复试验,我得到了以下代码:
/* GET home page. */
router.get('/', adminMiddleware, function (req, res, next) {
const shop = req.query.shop;
if (req.query.session) {
// if we're here, that means the app was clicked on in the shopify admin panel
return res.send({hello: 'world'});
}
if (shop) {
// if we're here, that means this is install initialization
const state = nonce();
const redirectUri = forwardingAddress + '/shopify/callback';
const installUrl = 'https://' + shop +
'/admin/oauth/authorize?client_id=' + apiKey +
'&scope=' + scopes +
'&state=' + state +
'&redirect_uri=' + redirectUri;
res.cookie('state', state);
res.redirect(installUrl);
} else {
return res.status(400).send('Missing shop parameter. Please add ?shop=your-development-shop.myshopify.com to your request');
}
});
因此,根据我的尝试和错误(我对此完全没有信心),我将在以下两种情况下最终进入我的Shopify路线的根目录(如Shopify partner dashboard上的应用程序URL设置中所定义):
>
当有人安装应用程序时,在这种情况下,我希望在查询参数中有一个shop
,或者
当有人在Shopify商店的管理面板中点击我的应用程序时,会出现req。查询会话
variable set,如果愿意,我可以使用一些html css进行响应(示例仅显示了一个简单的JSON响应)。
但是是这样吗?这是Shopify将使用我的根路径的两种情况吗?并且正在检查req。查询采购
或要求。查询会话
区分这两种情况的正确方法?我不确定我是否正确处理了这件事。
我不是这方面的专家,但我背后有一些应用程序,我也在使用nodejs,所以如果我所知道的可以帮助你,请随意。
首先,我建议在此处使用shopify cli设置https://shopify.github.io/shopify-app-cli/它提供了一个StutoApp应用StAltKEIT,它写在NeXJS和Node(它使用的是膝关节炎,它包含了一个包含图形的QuQL和一些其他的预处理的东西),这为您提供了所有的AuthTealMead。我使用的是自定义Express,但因为支持了一个重要的AuthExpress包被丢弃,我切换到膝关节炎,然后在他们的设置。所以是的,我的建议是配合他们的设置。
至于你的问题,这实际上取决于你的路线上配置了什么。
shopify可以发送一些不同的请求,具体取决于您的应用程序类型(自定义或公共)以及您是否有代理。
以下是您可能收到的所有请求(或我曾经处理过的请求):
这真的取决于你的应用程序是如何配置的,你可以在同一个路由上拥有所有5个请求(这是一个坏主意),或者如果你甚至不需要应用程序的仪表板,你可以拥有一个请求。
请记住,如果您不想处理此问题,可以将安装和主页分为不同的路径,只需将应用程序仪表板中的初始“主页”页面设置为不同的页面即可。
如果您正在与Koa合作,我认为这个包将有助于您更https://www.npmjs.com/package/@shop ify/koa-shop ify-auth,因为它得到了Shopify的支持。
此外,我没有看到您处理<代码>商店>代码>查询PARAM,这可能会导致XSS攻击在您的身边,请考虑在将其输出到安装URL之前对其进行消毒。
因此,在最后考虑使用StaskKIT,因为以后更容易为公共应用程序提供支持,因为他们对公共应用程序有严格的审查过程,当有需要修复的问题或需要添加的功能时,更容易引用他们的社区论坛。