Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何为多个商户运行自定义Shopify应用程序_Node.js_Shopify_Middleware_Shopify App - Fatal编程技术网

Node.js 如何为多个商户运行自定义Shopify应用程序

Node.js 如何为多个商户运行自定义Shopify应用程序,node.js,shopify,middleware,shopify-app,Node.js,Shopify,Middleware,Shopify App,我正在创建一个应为多个商户运行的自定义应用程序 我想为我的所有自定义应用运行一个中央服务器 Shopify有两种应用程序类型: 自定义应用程序:仅限于在一个商户商店上安装 公共应用程序:无限制商户安装,但需要Shopify审查,以保护信任和安全 以下是我们不公开此应用程序的几个原因: 避免实现Shopify计费API 避免等待应用程序列表审核 此应用不需要在Appstore上公开 我知道我需要为每个商家创建一个Shopify定制应用程序,但是我如何在服务器端处理它呢 有没有办法让crea

我正在创建一个应为多个商户运行的自定义应用程序

我想为我的所有自定义应用运行一个中央服务器

Shopify有两种应用程序类型:

  • 自定义应用程序:仅限于在一个商户商店上安装
  • 公共应用程序:无限制商户安装,但需要Shopify审查,以保护信任和安全
以下是我们不公开此应用程序的几个原因:

  • 避免实现Shopify计费API
  • 避免等待应用程序列表审核
  • 此应用不需要在Appstore上公开
我知道我需要为每个商家创建一个Shopify定制应用程序,但是我如何在服务器端处理它呢

有没有办法让createShopifyAuth中间件动态地建立auth

server/server.js

const { SHOPIFY_API_SECRET, SHOPIFY_API_KEY, SCOPES } = process.env;
server.use(
// TODO: Retrive shopID
// TODO: Fetch API_KEY, and API_SECRET from the db by given shopID
    createShopifyAuth({
      apiKey: SHOPIFY_API_KEY, // TODO: Use the API_KEY for given store
      secret: SHOPIFY_API_SECRET, // TODO: Use the API_SECRET for given store
      scopes: [SCOPES],

      async afterAuth(ctx) {
        //Auth token and shop available in session
        //Redirect to shop upon auth
        const { shop, accessToken } = ctx.session;
        await handlers.registerWebhooks(
          shop,
          accessToken,
          "ORDERS_PAID",
          "/webhooks/orders/paid",
          ApiVersion.October19
        );
        await handlers.registerWebhooks(
          shop,
          accessToken,
          "ORDERS_FULFILLED",
          "/webhooks/orders/fulfilled",
          ApiVersion.October19
        );
        ctx.cookies.set("shopOrigin", shop, {
          httpOnly: false,
          secure: true,
          sameSite: "none",
        });
        server.context.client = await handlers.createClient(shop, accessToken);

        await handlers.getOneTimeUrl(ctx);
        ctx.redirect("/");
      },
    })

如果要为多个商店创建自定义应用程序,则需要创建多个自定义应用程序并分别针对每个商店

如果您想为多个门店使用相同的自定义应用程序,则必须是公共应用程序而不是自定义应用程序

这是没有办法的,它不是代码相关的,而是Shopify的限制。因此,没有办法“欺骗”它在这里工作,这是不可能的

请注意,您可以不在其应用商店中列出您的公共应用。(有许多应用程序未在其应用商店中列出)


我无法确认这一点,但我相信,如果应用程序是免费的,您不需要实现计费api。(因为我主要编写定制应用程序)

根据Shopify的说法,Shopify定制应用程序只能安装在一个商店中

如果您希望您的应用程序在多个应用商店中使用,那么它必须是一个公共应用程序,您必须通过审查流程

关于计费API,如果您的应用程序是免费的,您不需要通过计费API,在这种情况下,您也不允许在Shopify之外向您的客户收费


关于审核时间,如果一切正常,那么您应该在几周内获得批准

谢谢@drip的回复。所有代码都可以从Shopify公开获得,是否无法编辑koa Shopify认证或koa Shopify webhooks,以便您可以使用自定义用户管理数据库切换出机密、API密钥,需要时使用Authtoken?@egillanton API密钥与应用程序绑定,而不是与应用商店绑定,因此不可以。你能告诉我如何在不登录应用商店的情况下安装我的公共应用程序吗?我试过了,但没有成功working@GaganpreetKaur这应该作为单独的问题提出!公共应用程序可以未列出,这意味着它们将出现在商店中,但您只能通过durect链接访问它们,如果您搜索它们,它们将不可见。(您将再次经历审查过程,对于公共应用程序,您不能跳过这一过程)您能否帮助我了解如何处理针对multile stores特定会话的管理员API调用身份验证的身份验证?