微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用API​​密钥/秘密密钥访问失败的私人JSON文件

如何解决使用API​​密钥/秘密密钥访问失败的私人JSON文件

希望您过得愉快。我正在尝试学习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,但是对于我来说,我一生都找不到原因。

非常感谢您的帮助。

解决方法

通常,您应该得到以下错误:

无法从包含凭据的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:

  • 管理API(即REST和GraphQL)
  • Storefront API(基于GraphQL)

这表示Storefront API十分有限,但很安全。

仅应在不会将您的凭据公开的应用程序或任何一种后端语言中使用Admin API。

在非常特殊的情况下,可以在前端使用Admin API,并且应该由完全了解权限和Shopify平台的开发人员完成,即使这样也不是一个好主意。


如果您仍在学习,Shopify REST API不适用于前端,则应改用mobile-browser-chrome

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。