我目前正在尝试构建一个私有应用程序,它允许我创建一个表单,客户可以使用该表单来更新姓名,电子邮件地址等信息。
我知道我可以通过客户对象在我的模板中访问此信息:
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?”的值?
答案 0 :(得分:0)
您应该查看此答案shopify app proxy: send customer data or only customer ID以获取一些指示,讨论和链接。
TL / DR;不要只依赖登录的客户ID,否则您将自己打开容易的hackery。
因此,您最重要的是使用您在问题中列出的PUT更新客户。 要安全地获取ID: 使用客户ID创建一个表单,并确保您有一个服务器生成的客户ID哈希来阻止机器人(这是参考文章)
您通过proxy url
将客户数据发布到应用您通过PUT将客户更新为构建的URL。