6

我能够从网络应用程序获取 API 密钥。但是,根据 SendGrid 文档,我只能访问整个密钥的一小部分。

如果您看到下面的 API 密钥示例:

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

子字符串"ngeVfQFYQlKU0ufo8x5d1A"是 API 密钥。

这些东西的其余部分是什么?它们是如何生成整个/完整字符串的?

参考:SendGrid Docs - API Keys


* 解决 *

API KEY 只生成一次并向您显示。因此,请务必将其复制并保存在某处。之后仅显示子集键。

4

2 回答 2

10

API KEY 只生成一次并向您显示。因此,请务必将其复制并保存在某处。之后仅显示子集键。

在此处作为警告/警报的文档中提到了它。

于 2017-02-03T18:58:57.150 回答
8

子字符串"ngeVfQFYQlKU0ufo8x5d1A"是 API 密钥。

您所指的子字符串不是API 密钥,而是 API 密钥 ID。

这些东西的其余部分是什么?它们是如何生成整个/完整字符串的?

完整的字符串是整个 API 密钥,它分为 3 部分并用分隔。所以API KEY = SG.ID.VALUE

  • SG:在每个 SG API 密钥的开头附加一个固定值,我假设 SG 代表“SendGrid”。
  • ID:这是通过 API 编辑和删除密钥时用来引用密钥的密钥 ID,它不是实际的密钥。因此,如果这是您的 API 密钥: SG.aaaa.bbbbapi_key_id则将是aaaa.
  • VALUE :这是您只能读取一次的键值。

如何获取完整的 SendGrid API 密钥?

只有两种方法可以这样做;通过SendGrid UI或 API。两者都在创建时访问,您只能读取一次键值

  • API:为了从 API 创建和读取密钥,您需要事先访问 API,这意味着您需要使用 SendGrid UI 创建初始 API 密钥。之后,您可以POST 到 /api_keys

这是通过 Node.js 使用官方 SendGrid Web API v3 客户端的示例:

import sgClient from '@sendgrid/client';

/** Your initial API key from the SendGrid UI */
sgClient.setApiKey(process.env.SENDGRID_API_KEY);

let req = {
  method: 'POST',
  url: '/v3/api_keys',
  body: { name: 'NEW_SG_KEY' }
};

sgClient.request(req)
  .then( ([res, body]) => {
    console.log(`key: ${body.api_key}`);
    console.log(`ID:  ${body.api_key_id}`);
  })
  .catch( err => {
    console.log(`Unable to create new API key: ${err.code} ${err.message}`);
  });
于 2018-08-22T14:49:53.630 回答