Javascript 私有嵌入式shopify应用程序

Javascript 私有嵌入式shopify应用程序,javascript,html,sdk,shopify,Javascript,Html,Sdk,Shopify,我正在尝试构建嵌入式私人应用程序,但我缺少一些东西。按照指示,我创建了应用程序,获得了API密钥。然后是一个包含内容的非常简单的页面: <head> <script src="https://cdn.shopify.com/s/assets/external/app.js"></script> <script type="text/javascript"> ShopifyApp.init({ apiKey: 'my-pr

我正在尝试构建嵌入式私人应用程序,但我缺少一些东西。按照指示,我创建了应用程序,获得了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>
重定向URL为

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

我错过了什么?这是我第一次体验shopify,所以我可能完全不了解EASDK是如何工作的。我使用SSL从本地主机和我的域进行了测试。感谢您提供的提示。

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


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

正如一位“Shopify员工”在上所说,似乎有可能嵌入私人应用程序。但我不知道该怎么做

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

这就是我所做的:

  • 创建启用EASDK的私人应用程序(应用程序设置页面上的嵌入式设置部分)
  • 在HTTPS服务器上安装我的代码
  • 在我的店铺的设置页面上创建私人应用程序密钥
此时,我可以通过PHP API访问我的店铺的产品和订单,这让我相信我的应用程序已经安装

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

我也试过这个(没用):

  • 使用PHPAPI的方法生成“安装链接”
  • 单击该链接,显示消息(我的应用程序的名称)已被授予对Shopify数据的读/写访问权限
任何来自Shopify大师的意见都将不胜感激


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

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

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

我的问题是如何实现如何将嵌入式应用程序安装到应用商店,以及如何使其私有化,即不发布到应用商店即可供商店使用。答案是:

  • 我们需要创建一个启用“嵌入式应用程序SDK”的常规公共应用程序 (使用合作伙伴帐户)
  • 我们不需要将其发布到存储(所以 (除了我们,没有人会知道这件事)
  • 我们需要在商店的管理员安装它
最后一个操作意味着我们需要按照常规的公共Shopify应用程序所描述的那样做,即允许应用程序使用OAuth握手访问商店。描述了该过程

让我重复几点:

  • 像这样发送请求https://{shop}.myshopfify.com/admin/oauth/authorize?client\u id={api\u key}&scope={scopes}&redirect\u uri={redirect\u uri}。用适当的值替换{大括号中的字符串}。注意{redirect_uri}必须是应用程序设置中指定的重定向URL之一,{scopes}应替换为允许的范围之一(我使用了第一个范围,这对我来说并不重要,我不想修改数据,我只是不想使用嵌入式应用程序SDK UI方法)
  • 结果,它会将您发送到example.org/some/redirect/uri?code={authorization_code}&hmac=da9d83c171400a41f8db91a950508985×tamp=1409617544&state={nonce}&shop={hostname} (example.org/some/redirect/uri是在第一个请求中指出的重定向url)并希望您能够正确处理此查询
  • “妥善处理”意味着POST请求将发送到 https://{shop}.myshopify.com/admin/oauth/access_token,它将具有以下字段:
    • 客户端id-应用程序的API密钥
    • 客户端密码-应用程序的共享密码
    • 代码{authorization_code}随查询而来
  • 我不需要任何后端的东西,所以我只是创建了一个简单的html表单,包含所有必要的字段并提交了它(method=POST,action=https://{shop}.myshopify.com/admin/oauth/access_token),然后收到了一个带有访问令牌的json

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

    在私有应用下没有此选项。你是对的,看起来你无法在嵌入式模式下使用私有应用。如果你能告诉我应用的用途,我可以告诉你解决方案吗?你是为客户做的,还是打算在市场上发布?
    https://my-dev-shop.myshopify.com/admin/apps/my-private-api-key/