我创建了一个私人应用程序,可以在我的网站上使用(想法是网站将作为前端使用shopify的api连接到商店)。 当我创建应用程序时,如果我编辑它,则会有一个示例网址,如下所示:
如果您单击该链接,则可以看到我已设置的产品。 现在,如果我使用jQuery $ .get获取该URL并将其放入我的网站,我会收到一条错误,指出无效的API密钥或访问令牌(无法识别的登录或错误的密码,因为您可以成像,这真的很令人愤怒。
我尝试使用ApiPassword添加标题,如下所示:
“X-Shopify-Access-Token”:“49a28c7ccfa3b29b2a9af8019b2723cc”
但我得到同样的错误。 现在这可能是由于不允许交叉原始标题等。所以我在c#中创建了一个函数:
public string Get()
{
using (var wc = new WebClient())
{
return wc.DownloadString("https://926b44aa1af222f2089ffa4988bc146b:49a28c7ccfa3b29b2a9af8019b2723cc@kudos-6.myshopify.com/admin/products.json");
}
}
我希望工作,但事实并非如此。我犯了同样的错误。 所以我试过了:
public string Get()
{
using (var wc = new WebClient())
{
wc.Headers.Add("X-Shopify-Access-Token", "926b44aa1af222f2089ffa4988bc146b");
return wc.DownloadString("https://926b44aa1af222f2089ffa4988bc146b:49a28c7ccfa3b29b2a9af8019b2723cc@kudos-6.myshopify.com/admin/products.json");
}
}
然后猜猜是什么,我得到同样的错误。 所以我尝试使用这个秘密:
public string Get()
{
using (var wc = new WebClient())
{
wc.Headers.Add("X-Shopify-Access-Token", "e63081c23cd05b64205dbdb670d60241");
return wc.DownloadString("https://926b44aa1af222f2089ffa4988bc146b:49a28c7ccfa3b29b2a9af8019b2723cc@kudos-6.myshopify.com/admin/products.json");
}
}
同样的错误。
谁能告诉我为什么?
答案 0 :(得分:2)
所以,对于其他有这个问题的人来说,这就是解决方案:
首先,将这些行添加到 WebApiConfig :
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None;
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.Formatters.Remove(config.Formatters.XmlFormatter);
然后,使用 Api密码作为访问令牌,如下所示:
public string Get()
{
using (var wc = new WebClient())
{
wc.Headers.Add("X-Shopify-Access-Token", "49a28c7ccfa3b29b2a9af8019b2723cc");
return wc.DownloadString("https://kudos-6.myshopify.com/admin/orders.json");
}
}
就是这样。如果你这样做,它会起作用。
答案 1 :(得分:-1)
您可以使用jQuery检索产品,如下所示:
$.ajax({
type: 'GET',
url: 'http://yourshop.myshopify.com/products.json',
dataType: 'jsonp',
success: function(data) {
console.log(data);
}
});
答案 2 :(得分:-2)
在你前进的时候,你应该停下来并退出这种模式。您是否看到将您的API令牌设置为访问您的商店在公共网站中的愚蠢行为?没有什么可以阻止任何汤姆,迪克或简骚扰你的商店并破坏你的电子商务日。
相反,让自己成为使用App Proxy访问后端商品的前端。至少这是安全的,并确保没有人可以搞乱你的商店。