Node.js 在私有应用程序中使用客户对象信息

Node.js 在私有应用程序中使用客户对象信息,node.js,shopify,liquid,Node.js,Shopify,Liquid,我目前正在尝试建立一个私人应用程序,它将允许我创建一个表单,客户可以使用该表单更新姓名、电子邮件地址等信息 我知道我可以通过customer对象访问模板中的此信息: 我还相信我可以通过管理api发送http请求,这将允许我更新给定的客户对象: 这是来自该页面的PUT请求示例 PUT /admin/customers/#{id}.json { "customer": { "id": 207119551, "email": "changed@email.address.com

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

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

我还相信我可以通过管理api发送http请求,这将允许我更新给定的客户对象:

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

PUT /admin/customers/#{id}.json
{
  "customer": {
    "id": 207119551,
    "email": "changed@email.address.com",
    "note": "Customer is a great guy"
  }
}
我认为为了使用这个api(或者至少安全地使用它),我需要使用一个私有应用程序。我找到了以下npm包,我将使用它创建私人应用程序:

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

var put\u数据={
“产品”:{
“正文html”:“已更新!”
}
}
Shopify.put('/admin/products/1234567.json',put_数据,函数(err,data,headers){
控制台日志(数据);
});
有没有人有这样做的经验,因为我对一些事情不确定

  • 加载url时是否会调用此PUT请求?所以如果我有一个
    href=“/admin/products/1234567.json
    标记请求是否会加载

  • 如果是这样的话,这似乎对硬编码的客户ID毫无用处。我是否可以输入登录者的客户ID并单击链接,然后以某种方式将其用作请求url的最后一部分?此外,是否可以获取用户输入的表单数据,以用作“电子邮件”或“备注”的值


您应该查看此答案,了解一些提示、讨论和链接

tl/dr;不要只依赖于登录的客户id,否则你将很容易被黑客攻击

因此,基本上你要用你在问题中概述的PUT更新客户。 要安全获取id,请执行以下操作: 创建一个带有客户id的表单,并确保服务器生成了该客户id的散列,以阻止僵尸程序(这是参考文章)

您可以通过将客户数据发布到应用程序


您可以通过PUT将客户更新为构造的url

谢谢你的信息!我通读了所有的内容,但老实说,大部分内容都超出了我的理解范围。你知道我所尝试的是否至少可行,以及我如何安全地实现它吗?另外,我不认为你知道如何编写PUT请求来匹配任何客户ID?我已经在应用程序上下文之外添加了对我的回答的引用,你可以使用
{%form'customer\u address',customer.new\u address%}更新客户地址
否则,您需要进入应用程序代理和复杂的身份验证来阻止黑客。
var put_data = {
  "product": {
    "body_html": "<strong>Updated!</strong>"
  }
}
Shopify.put('/admin/products/1234567.json', put_data, function(err, data, headers){
  console.log(data);
});