返回

如何在 Request-Promise 中使用 API 密钥和密码验证 Shopify API?

javascript

用 API 密钥和密码在 Request-Promise 中验证身份

导言

在 Node.js 中使用 request-promise 向 Shopify API 发出请求时,正确配置 API 密钥和密码至关重要。如果不正确配置,你会收到 401 错误,指出凭据无效。本文将深入探讨使用 Base64 编码和 Basic 认证在 request-promise 中进行身份验证的步骤。

编码 API 密钥和密码

第一步是将 API 密钥和密码编码为 Base64。这样做可以确保它们安全地传递,同时防止未经授权的访问。以下 Node.js 代码片段演示了如何进行编码:

const Buffer = require('buffer').Buffer;

const encodedCredentials = Buffer.from(`${apiKey}:${password}`).toString('base64');

设置 Authorization 头

一旦凭据被编码,下一步是将它们添加到请求的 Authorization 头中。使用 Basic 认证,授权头格式为 Basic {encodedCredentials}。以下是更新后的 request-promise 选项:

options = {
  method:'GET',
  json: true,
  uri: 'https://the-bib-wine-company.myshopify.com/admin/api/2019-07/orders.json',
  headers: {
   'Authorization': `Basic ${encodedCredentials}`
  }
}

案例研究:从 Shopify API 检索订单

现在,我们来看看如何使用正确配置的凭据从 Shopify API 检索订单。以下 Node.js 代码片段展示了整个过程:

const request = require("request-promise");
const Parse = require('parse/node');


const apiKey = 'YOUR_API_KEY';
const password = 'YOUR_PASSWORD';

const encodedCredentials = Buffer.from(`${apiKey}:${password}`).toString('base64');

const options = {
  method:'GET',
  json: true,
  uri: 'https://the-bib-wine-company.myshopify.com/admin/api/2019-07/orders.json',
  headers: {
   'Authorization': `Basic ${encodedCredentials}`
  }
}


request(options)
  .then(function(response) {

var Test = Parse.Object.extend("Test");
    var test = new Test();

test.set('orders', 'success');
    test.save();

  })
  .catch(function(err) {
    console.log(err)
  })

结论

通过正确配置 API 密钥和密码,你可以使用 request-promise 轻松验证 Shopify API 的身份。请确保正确编码凭据并将其添加到请求的 Authorization 头中。遵循这些步骤将使你能够安全高效地访问 Shopify API。

常见问题解答

  1. 如何获得我的 Shopify API 密钥和密码?

    你可以从 Shopify 管理面板的“应用”部分获取你的 API 密钥和密码。

  2. 为什么我的请求仍然收到 401 错误?

    请检查你的凭据是否正确,包括大小写和标点符号。此外,确保你的 API 密钥具有正确的权限。

  3. Base64 编码有什么好处?

    Base64 编码可确保凭据以安全且紧凑的形式传递,防止未经授权的访问。

  4. 是否还有其他身份验证方法可以使用?

    除了 Basic 认证,Shopify API 还支持 OAuth 2.0 认证。

  5. 如何提高 request-promise 请求的安全性?

    除了使用 HTTPS 协议外,还可以考虑使用请求签名或防篡改标头来提高安全性。