希望您过得愉快。我正在尝试学习Shopify开发人员,但是我真的很坚持。我已经看完了整个教程,但是仍然不了解如何使用API密钥信息执行REST API调用。
我希望能够使用GET查询json文件,但似乎无法正确连接。我已经在Reddit和Shopify论坛中发布了,但没有任何回应。我觉得我确实缺少一些明显的东西。我花了几个小时浏览文档,却无法正常工作。
我不断从代码中收到错误“ errors: '[API] Invalid API key or access token (unrecognized login or wrong password)
”,以尝试访问该JSON。我也在这里发布了,但不幸的是,该信息并没有帮助。我正在使用的代码如下:
fetch('https://<API-KEY>:<API-SECRET-KEY>@test-store-cap.myshopify.com/admin/api/2020-07/checkouts.json')
.then(response => response.json())
.then((jsonData) => {
// jsonData is parsed json object received from url
var data = jsonData;
for (var i = 0; i < data.length; i++)
{
var obj = data[i];
console.log("Email: " + obj.email + ", Phone Number: " + obj.phone);
}
console.log(jsonData)
})
.catch((error) => {
// handle your errors here
console.error(error)
})
老实说,尽管在URL中显式使用了api键(我已将其删除),但我仍然不知道为什么它总是给我这个错误。我尝试了带有和不带有api键的网址。我还没有使用从.env导入的文件,因为我只是想让此测试适应我之前就使它工作。我从堆栈溢出中得到了一些这样的代码,我完全没有主意。我听说btoa是必需的,但我将其与npm install btoa
一起使用,但无法导入它,并且也无法正常工作。
我一直在尝试将信息传递到URL的多种方法,这里的许多不同问题使我回到同一问题。给出的错误是由于连接而引起的,但是由于不允许访问,所以它确实连接到了URL,但是对于我来说,我一生都找不到原因。
非常感谢您的帮助。
答案 0 :(得分:0)
通常,您应该得到以下错误:
无法从包含凭据的URL构造请求:
为了发出有效请求,您的提取应如下所示:
var headers = new Headers();
headers.append('Authorization', 'Basic ' + btoa(API_KEY+ ':' + API_PASSWORD));
fetch('https://test-store-cap/admin/api/2020-07/checkouts.json', {headers: headers})
.then(response => response.json())
...
如果btoa
对您不起作用,则可以使用许多base64
的{{1}}编码器。
我希望npm
的意思是API-SECRET-KEY
,而不是API Password
,因为如果您使用共享密钥,那就错了。
这表示您要尝试的操作真的很糟糕。不应在前端使用admin API,因为您会将凭据公开给所有人,并且如果您未将权限设置为仅读取和限制它们,那么您将面临一个巨大的安全漏洞。
有两个API:
这表示Storefront API十分有限,但很安全。
仅应在不会将您的凭据公开的应用程序或任何一种后端语言中使用Admin API。
在非常特殊的情况下,可以在前端使用Admin API,并且应该由完全了解权限和Shopify平台的开发人员完成,即使这样也不是一个好主意。
如果您仍在学习,Shopify REST API不适用于前端,则应改用mobile-browser-chrome。