SendGrid API 键无效。 "The provided authorization grant is invalid, expired or revoked"

SendGrid API Key is not working. "The provided authorization grant is invalid, expired or revoked"

SendGrid 似乎在阻止我的节点 js 服务器发送电子邮件。

我在发送电子邮件的回复中收到此错误消息:

The provided authorization grant is invalid, expired or revoked

我也有一个 API 密钥设置,并且已按照文档进行操作。

您需要使用 API 生成的密钥

请勿使用 API 密钥 ID

Sendgrid 在您创建时仅显示一次生成的密钥。

如果您在创建密钥时没有将它记录在某个地方,您将需要创建一个新密钥,然后您可能想要删除旧密钥,因为如果您不知道它就没用了这是什么。

仅供参考:上面屏幕截图中的 API 键已被删除。我马上删除了它,所以请不要担心我泄露那个密钥。

这是一个迟到的答案并且 JAVA 面向..但是我只是复制了文档而没有注意到..

SendGrid sg = new SendGrid(System.getenv("SENDGRID_API_KEY"));

我只是把钥匙放在那里,没看到 getEnv。当然很傻.. 但是当试图让事情快速工作时......

在 Sendgrid v3 中,我在 Node JS 中使用 env 变量时遇到了类似的问题。如果我使用 env 变量,我会遇到上述问题。但是,如果我将字符串放到 require 进程中,它就可以工作。

无效:

SENDGRID_API_KEY=SG.XXXXXXXXXXXXXXXXXXX
var sg = require('sendgrid')(process.env.SENDGRID_API_KEY);

有效

var sg = require('sendgrid')('SG.XXXXXXXXXXXXXXXXXXX');

将 SG.XXXXXXXXXXXXXXXXXXX 替换为 API 密钥生成(在密钥生成过程中您只能看到一次)。

编辑

注意:确保您没有将其保存到 public 存储库。如果您这样做,任何人都可以使用您的 API 密钥,并且您的帐户将被 Sendgrid 团队暂时暂停,直到您将其从存储库中删除。

  • 如果您正在使用 node js,
  • 确保文件中的 require('dotenv').config() 行需要 sendgrid/nodemailer 模块。
  • 没有它,sendgrid 传输器 将具有 undefined 值而不是 api_key

对我来说,我只需要生成一个新的 API 密钥。由于某些奇怪的原因,以前的 API 密钥已失效,因此我还为这种情况添加了警报

我有同样的问题,在我验证我的电子邮件地址并启用 2FA 后它消失了。

在我的例子中,我尝试使用 telnet 调试连接,但一直被拒绝。

原来这两个不等价,echo会在编码后的字符串中包含\n

echo 'apikey' | base64
printf 'apikey' | base64

所以,是的,请确保您没有在 API 键中包含换行符。

这是我的解决方案:

  1. 安装dotenv包:npm i dotenv

  2. 转到应用程序的最早入口点(即 index.js)并将其放在顶部:

    const dotenv = require('dotenv').config();

  3. 创建.env 文件并添加SENDGRID_API_KEY=。没有引号 '' 或 "".

  4. 在您使用 sendgrid 的文件中,将此添加到顶部:

    const sgMail = require('@sendgrid/mail');

    sgMail.setApiKey(process.env.SENDGRID_API_KEY);

完成。

答案可能会迟到,但对于在 spring 启动时遇到同样问题的人

当您使用 env 或 属性 value

时,可能是在初始化时引起的

我在spring加载值之前在构造函数中初始化变量,它给出了相同的输出。所以要么在调用 SendGrid 函数的方法中初始化它,要么在加载值后进行初始化

而不是使用, api_key: ${process.env.SENDGRIDAPIKEY}

尝试, api_key: "" + ${process.env.SENDGRIDAPIKEY} + ""

对我有用,