Shopify-发出API请求以更新用户的电子邮件

时间:2019-07-12 07:55:54

标签: shopify

使用Shopify Admin API-我已经能够更新用户的电子邮件地址。

我已经用Postman进行了测试,并传入了一个私人应用秘密密钥。

现在,我想在实际页面上使用此功能,但是有一些问题:

  • 我无法像任何人看到的那样将那些私有应用程序密钥完全存储在页面本身的JS代码上。我也无法发送请求,因为任何人都会再次看到它。
  • 是否可以创建某种中介,使我可以建立某种端点,例如POST /update/useremail跨客户ID发送
  • 如果上述情况可行-我不确定如何避免任何随机的人撞到该端点并更新其他用户的电子邮件地址。

有没有人有任何经验/想法/建议来做一个简单的方法?

任何帮助表示赞赏。

谢谢。

1 个答案:

答案 0 :(得分:1)

问题:您遇到的问题是,您要验证电子邮件更改请求是否为有效呼叫?然后,如果发现有效,则进行API调用以对其进行更新。

我的解决方案
在Shopify中使用表单创建页面以更新电子邮件。仅显示该页面以登录用户。当用户登陆页面时,向他们显示表单以传递他们想要的新电子邮件。您需要在此处添加一些内容以验证请求。页面加载后,从Shopify后端创建一个哈希字符串,如下所示。

{% if customer != nil %}
  {% assign timestamp = 'now' | date: "%s" %} //epoch time stamp
  token = {{ customer.email | append: '<random_string>' | append: timestamp | sha256 }}
{% endif %}

每当请求更改电子邮件时,都通过在服务器上创建哈希来在您的末端验证SHA256代码。如果哈希有效,请更新电子邮件。确保在您发出的请求中传递时间戳和旧电子邮件。

您需要解决的安全问题-

  1. 您需要始终验证时间戳,例如。不应是将来的10秒或过去的10秒。
  2. 您的随机字符串也可以被强制使用。因此,请继续使用Assets API定期更新随机字符串。可能性很小,但是为什么要冒险。