【问题标题】:Private embedded shopify app私人嵌入式 shopify 应用程序
【发布时间】:2014-05-29 18:49:57
【问题描述】:

我正在尝试构建 Embedded Private App,但我缺少一些东西。按照here 的指示,我创建了应用程序,获得了 API 密钥。然后是一个非常简单的页面内容:

<head>
  <script src="https://cdn.shopify.com/s/assets/external/app.js"></script>
  <script type="text/javascript">
    ShopifyApp.init({
      apiKey: 'my-private-api-key',
      shopOrigin: 'https://my-dev-shop.myshopify.com',
      debug: true
    });
  </script>
</head>
<body>
Private app
</body>

我会通过访问此页面获得重定向到我的商店的屏幕。

The page you're looking for can't be found.
Try a search instead.

重定向网址是

https://my-dev-shop.myshopify.com/admin/apps/my-private-api-key/ 

我错过了什么?这是我第一次使用shopify,所以也许我对 EASDK 的工作原理一无所知。我从本地主机和我的域使用 SSL 对其进行了测试。感谢您提供任何提示。

【问题讨论】:

  • 如果您能告诉我应用程序的用途,我可以告诉您一个解决方案吗?您是为客户做这件事还是打算在市场上发布它?

标签: javascript html sdk shopify


【解决方案1】:

我想更多地关注嵌入式应用程序,并更多地讲述我在设法将其创建为私有应用程序并将其安装为私有应用程序之前遇到的经验和问题。

嵌入式应用程序允许修改 Shopify 管理部分的外观。实际上,Shopify 中没有称为“嵌入式应用程序”的特殊应用程序类型。应用程序创建者在其合作伙伴帐户中创建常规“公共”应用程序时,只需启用“嵌入式应用程序”SDK。因此,如果启用此功能 - 应用程序可以在商店的管理员中使用 Embedded App SDK。

我的问题是了解如何将嵌入式应用程序安装到商店以及如何将其设为私有,即商店可以在不发布到 App Store 的情况下使用它。答案是:

  • 我们需要创建一个启用“嵌入式应用 SDK”的常规公共应用 (使用合作伙伴帐户)
  • 我们不需要将它发布到存储(所以 除了我们之外没有人会知道)
  • 我们需要在商店的管理员中安装它。

最后一个操作意味着我们需要按照常规公共 Shopify 应用程序的描述执行所有操作,即允许应用程序使用 OAuth 握手访问商店。该过程描述为here

让我重复一些要点:

  1. 发送这样的请求https://{shop}.myshopify.com/admin/oauth/authorize?client_id={api_key}&amp;scope={scopes}&amp;redirect_uri={redirect_uri}{strings in curly braces} 替换为适当的值。注意{redirect_uri} 必须是应用设置中指定的重定向 URL 之一,{scopes} 应替换为来自here 的允许范围之一(我使用了第一个范围,这对我来说并不重要,我不想修改数据,我只是不想使用 Embedded App SDK UI 方法)。
  2. 结果它会将您发送到example.org/some/redirect/uri?code={authorization_code}&amp;hmac=da9d83c171400a41f8db91a950508985&amp;timestamp=1409617544&amp;state={nonce}&amp;shop={hostname} (example.org/some/redirect/uri 是第一个请求中指向的 redirect_url),并希望您能正确处理此查询。
  3. “正确处理”表示 POST 请求将被发送到 https://{shop}.myshopify.com/admin/oauth/access_token,它将具有以下字段:
  • client_id - 应用的 API 密钥
  • client_secret - 应用的共享密钥
  • code - {authorization_code} 附带查询。

我不需要任何后端的东西,所以我只是创建了包含所有必要字段的简单 html 表单并提交它(method=POSTaction=https://{shop}.myshopify.com/admin/oauth/access_token)并收到一个带有访问令牌的 json。

在应用程序部分的商店管理员中,您必须看到添加应用程序的链接。在此处单击它后,它将尝试打开加载 iframe,其 src 等于您的应用程序的应用程序 URL。此 URL 必须指向您的应用程序,即您可以在其中执行所需操作的 html。通常人们希望使用 SDK 方法。 请注意可能的 http/https 问题

【讨论】:

    【解决方案2】:

    如果您将“应用程序设置”>“嵌入式设置”设置为禁用(独立应用程序)但将您的应用程序用作嵌入式应用程序,则会出现此错误。只需将“嵌入式设置”设置为启用,您的应用就可以正常运行。

    【讨论】:

    • 私有应用下没有这个选项。
    • 你说得对,好像不能在嵌入式模式下使用私有应用。
    【解决方案3】:

    我遇到了同样的问题并尝试了不同的方法......

    正如“Shopify 员工”在this forum post 上所说,似乎可以嵌入私人应用程序。我找不到怎么做。

    真正的私有应用程序不使用 OAuth 并且不会在 Shopify 后台中列出,但是您可以在合作伙伴区域创建应用程序,切勿将其发布到应用商店,并且只允许将其安装在您喜欢的任何商店.这些应用程序将在管理员中列出,并具有对 EASDK 的完全访问权限。

    这就是我所做的:

    • 创建启用了 EASDK 的私有应用(应用设置页面上的嵌入式设置部分)
    • 在 HTTPS 服务器上安装我的代码
    • 在我的商店设置页面上创建一个私有应用密钥

    此时,我可以通过 PHP API 访问我商店的产品和订单,这让我相信我的应用程序已安装。

    然后我复制了Shopify's embedded app SDK initialization doc 上提供的代码。我在浏览器中打开此页面并自动重定向到 404。 URL 哦,那个页面看起来像https://name-of-my-shop.myshopify.com/admin/apps/ID_OF_MY_APP/

    我也试过这个(没用):

    • 使用 PHP API 的方法install_url 生成“安装链接”
    • 单击该链接,显示消息(我的应用程序名称)已被授予对您的 Shopify 数据的读/写访问权限。

    任何来自 Shopify 大师的意见将不胜感激

    注意。 API似乎也发生了很大的变化,这可能是一个暂时的问题,但我当然希望不是这样,我们可以解决这个问题!

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 1970-01-01
      • 2017-06-01
      • 2022-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      相关资源
      最近更新 更多