子字符串"ngeVfQFYQlKU0ufo8x5d1A"
是 API 密钥。
您所指的子字符串不是API 密钥,而是 API 密钥 ID。
这些东西的其余部分是什么?它们是如何生成整个/完整字符串的?
完整的字符串是整个 API 密钥,它分为 3 部分并用点分隔。所以API KEY = SG.ID.VALUE
:
- SG:在每个 SG API 密钥的开头附加一个固定值,我假设 SG 代表“SendGrid”。
- ID:这是通过 API 编辑和删除密钥时用来引用密钥的密钥 ID,它不是实际的密钥。因此,如果这是您的 API 密钥:
SG.aaaa.bbbb
,api_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}`);
});