【问题标题】:Customer update request is working via POSTMAN but not via AJAX using Shopify private app客户更新请求通过 POSTMAN 工作,但不是通过使用 Shopify 私有应用程序的 AJAX
【发布时间】:2019-08-21 17:00:57
【问题描述】:

我正在尝试使用 Shopify 的私有应用更新其客户标签。我用邮递员试了一下,一切正常,但是通过 AJAX,它把我带到了成功回调而不是错误,但在成功时,我得到了身份验证链接,而不是像我在邮递员中得到的客户记录。

 $.ajax({
    type: "POST",
    url: "https://secret:password@store-name.myshopify.com/admin/customers/1569902297146.json",
    contentType: 'application/json',
    data: JSON.stringify({
       customer: {
         id: "1569902297146",
         email: "example@gmail.com",
         tags: "loyalty-member"
       }
     }),
    success: function(msg, b ,b) {
        console.log(msg);
    },
    error: function(a, b, c) {
        console.log(msg);
    }
});

【问题讨论】:

  • 您能否确认您没有在邮递员请求中添加任何身份验证标头?
  • 感谢您的回复。我通过 URL 附上这个。你知道我们可以有许多 AJAX 格式。顺便说一句,我通过添加跨域得到了成功的结果。

标签: javascript ajax postman shopify shopify-app


【解决方案1】:

你做错了。如果你继续像这样在前端公开你的密码,你很快就会发现有人会用它把你所有的客户都变成色情明星的名字,结果你会失去工作,失去信誉。相反,您使用私有应用程序中内置的应用程序代理来执行非 CORS、安全、可靠的回调,而无需涉及密码。

【讨论】:

  • 我有一个私人应用程序。我们可以将 App Proxy 添加到公共应用而不是私有应用吗?
  • 在合作伙伴仪表板中创建了一个应用程序。在扩展下,您可以添加代理。您没有义务在应用商店中发布您的应用,因此它仍然是您的私有应用。
【解决方案2】:

我认为你不需要使用JSON.stringify

像对象一样发送数据

$.ajax({
    type: "POST",
    url: "https://secret:password@store-name.myshopify.com/admin/customers/1569902297146.json",
    contentType: 'application/json',
    data: {
       customer: {
         id: "1569902297146",
         email: "example@gmail.com",
         tags: "loyalty-member"
       }
     },
    success: function(msg, b ,b) {
        console.log(msg);
    },
    error: function(a, b, c) {
        console.log(msg);
    }
});

【讨论】:

    【解决方案3】:

    我没有在互联网上找到任何有效的答案/信息。 最后,经过AJAX的尝试和尝试,我能够获得成功的结果。

    $.ajax({
        type: "POST",
        url: "https://secret:password@store-name.myshopify.com/admin/customers/1569902297146.json",
        contentType: 'application/json',
        crossDomain: true,
        data: JSON.stringify({
           customer: {
             id: "1569902297146",
             email: "example@gmail.com",
             tags: "loyalty-member"
           }
         }),
        success: function(msg, b ,b) {
            console.log(msg);
        },
        error: function(a, b, c) {
            console.log(msg);
        }
    });
    

    真正的英雄是crossDomain。我不知道为什么 Shoify 不允许其 PUT 和 POST 请求而不进行 crossDomain: true,

    【讨论】:

      猜你喜欢
      • 2016-07-03
      • 1970-01-01
      • 2022-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      • 2020-07-29
      相关资源
      最近更新 更多