【问题标题】:Shopify update customer tags using apiShopify 使用 api 更新客户标签
【发布时间】:2020-05-13 00:44:50
【问题描述】:

客户如何更新自己的客户[标签]?

我尝试将 jquery.ajax 用于 api,但它返回 XMLHttpRequest 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。

$.ajax({
    type: "POST",
    url: 'https://mydomain.myshopify.com/admin/api/2020-04/customers/'+__st.cid+'.json',
    data: '{"customer": {"id": '+__st.cid+',"tags": "lng:fr"}}',
    dataType: "json"
});

谢谢

【问题讨论】:

    标签: jquery ajax shopify liquid


    【解决方案1】:

    客户无权访问他们的标签。他们不能也不应该使用他们帐户中的 Admin API 直接更新它们!

    正确的方法是创建一个custom app 和一个指向端点的proxy URL 来执行此操作。通过这样做,您不会向公众公开 Shopify 访问令牌,并且您可以验证请求以确保它来自 Shopify 来自该特定客户。

    无论如何,您尝试这样做的方式都不正确,因为它会允许任何人更新甚至删除您商店中的所有客户 - 不要那样做。

    【讨论】:

    • 为什么 Shopify 不验证更新的用户是否与当前用户匹配?这将不允许任何人更新或删除所有客户。
    • 您想直接从 Shopify 网站发出 Ajax 请求,这意味着 Shopify API 访问令牌将向公众公开。如果有人可以从您的 Ajax 请求中获取它,那么他将无法执行访问令牌有权访问的任何操作。你不想要这个。任何人都不应该使用这样的 API 密钥。
    • 当请求到达 Shopify API 端点时 - 他们验证访问令牌是否有效。在这种情况下,他们不能也不应该验证客户是否获得授权。您正在访问 Admin API,它不应该被公众直接访问。
    • 我明白了,但是为什么连接的客户无法更新自己的个人资料调用 api 而没有访问令牌,而他们让他们通过在登录表单上添加隐藏字段来更新他们的个人资料。
    • 因为当客户注册或注册时 - 没有 API 密钥向公众公开。是的,有一个通过注册表单添加客户标签的功能 - 它只是一个功能,与通过 API 更新客户标签没有任何共同之处。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2020-09-11
    • 2018-08-10
    相关资源
    最近更新 更多