在私人应用中使用客户对象信息

时间:2017-07-12 21:23:06

标签: node.js shopify liquid

我目前正在尝试构建一个私有应用程序,它允许我创建一个表单,客户可以使用该表单来更新姓名,电子邮件地址等信息。

我知道我可以通过客户对象在我的模板中访问此信息:

https://help.shopify.com/themes/liquid/objects/customer

我也相信我可以通过admin api发送http请求,这样我就可以更新给定的客户对象:

https://help.shopify.com/api/reference/customer#update

这是来自该页面的示例PUT请求

PUT /admin/customers/#{id}.json
{
  "customer": {
    "id": 207119551,
    "email": "changed@email.address.com",
    "note": "Customer is a great guy"
  }
}

我认为为了使用这个api(或者至少安全地使用它),我需要使用私有应用程序。我发现了以下用于创建私有应用程序的npm包:

https://www.npmjs.com/package/shopify-node-api

这是该页面的PUT请求示例(我认为可以为客户修改):

var put_data = {
  "product": {
    "body_html": "<strong>Updated!</strong>"
  }
}
Shopify.put('/admin/products/1234567.json', put_data, function(err, data, headers){
  console.log(data);
});

有没有人有这方面的经验,因为我不确定一些事情。

  • 加载网址时是否会调用此PUT请求?所以,如果我有一个 <a>标记href="/admin/products/1234567.json请求会加载吗?

  • 如果是这样,这对于硬编码的客户ID似乎毫无用处。我可以传递登录的客户ID并点击链接并将其作为请求URL的最后一部分以某种方式使用吗?除此之外,是否可以获取用户输入的表单数据作为“email”或“note?”的值?

1 个答案:

答案 0 :(得分:0)

您应该查看此答案shopify app proxy: send customer data or only customer ID以获取一些指示,讨论和链接。

TL / DR;不要只依赖登录的客户ID,否则您将自己打开容易的hackery。

因此,您最重要的是使用您在问题中列出的PUT更新客户。 要安全地获取ID: 使用客户ID创建一个表单,并确保您有一个服务器生成的客户ID哈希来阻止机器人(这是参考文章)

您通过proxy url

将客户数据发布到应用

您通过PUT将客户更新为构建的URL。