Rest 如何从/admin/products.json获取数据,即使I';m注销(这样普通访问者也可以看到数据)?

Rest 如何从/admin/products.json获取数据,即使I';m注销(这样普通访问者也可以看到数据)?,rest,api,shopify,shopify-app,Rest,Api,Shopify,Shopify App,我对Shopify还很陌生,不了解他们的REST是如何工作的,但经过长时间的调查,我了解到每次需要products.json时,我都需要以某种方式验证我的请求 当我从shopify注销时,ajax会将我重定向到登录页面,在那里我可以单击“继续”。但什么也没发生 如果访问令牌有帮助,我如何生成一个? 这门课我有红色的,但这门课是关于公共应用的(即使他说公共和私人的技术内容是一样的)。 有人能帮忙吗?你应该更好地解释你的意思。如果您觉得需要,为什么不能使用Liquid呈现产品JSON呢?所有主题都

我对Shopify还很陌生,不了解他们的REST是如何工作的,但经过长时间的调查,我了解到每次需要products.json时,我都需要以某种方式验证我的请求

当我从shopify注销时,ajax会将我重定向到登录页面,在那里我可以单击“继续”。但什么也没发生

如果访问令牌有帮助,我如何生成一个? 这门课我有红色的,但这门课是关于公共应用的(即使他说公共和私人的技术内容是一样的)。


有人能帮忙吗?

你应该更好地解释你的意思。如果您觉得需要,为什么不能使用Liquid呈现产品JSON呢?所有主题都在Javascript中实现了这一点

但是,万一你真的因为一些奇怪的原因而不能轻易地做到这一点,你可以遵循下面的建议

你得马上停下来!不要尝试从前端访问后端数据,因为这会暴露您的API令牌!相反,有一个简单的模式供您使用:

  • 安装可访问商店中产品的私人应用程序
  • 使用Shopify中的合作伙伴帐户在该应用中设置应用程序代理
  • 设置应用程序以接收产品ID,并在前端返回所需的特定JSON
  • 在前端,您现在可以访问该应用程序并安全地接收数据

Shopify停止从前端提供产品详细信息,因为它使商店面临竞争对手的滥用。

谢谢你,大卫!我制作了定制的ajax过滤系统,用于通过标签、颜色和类型过滤产品。您关于在视图上以json呈现产品并在javascript中获取产品的建议非常好,我尝试实现了这一点,但是collection.products或collections.all.products只返回前50个产品。你知道我怎样才能得到所有的产品吗?还有关于获取私人应用程序-然后我可以获取所有产品以及我需要的所有信息(标签、图像、价格等)?您可以对50多个产品进行分页。但请注意,使用collection.all可能会降低您的速度并花费您大量时间。一个私人应用程序可以帮助你,因为你将大量搜索和过滤逻辑移动到运行速度快、返回结果速度快的代码中。。到100年,它仍然返回50种产品。我怎样才能做到这一点?
        if ( collectionId ) {
            var url ='/admin/products.json?published_status=published&limit=' + limit + '&page=' + filterPage + '&collection_id=' + collectionId;
        } else {
            var url = '/admin/products.json?published_status=published&limit=' + limit + '&page=' + filterPage;
        }

        $.ajax({
            type: 'GET',
            url: url,
            dataType: 'json',
            contentType: 'application/json',
            headers: {
                'X-Shopify-Access-Token': '',
                // Would it fix my problem? If so, how to generate private token?
                'content-type': 'application/json'
            },
            success: function(data){
            ...
            },
            error: {
            ...
            }
       });

// Works when logged in
// Does not work