firebase - 试图弄清楚为什么 Sendgrid 的电子邮件 API 与 Firebase 函数的集成返回 "API key does not start with SG."

标签 firebase firebase-authentication sendgrid sendgrid-api-v3

我正在尝试将 Sendgrid 的电子邮件 API 与我的 Firebase 网络应用程序集成。这是我所做的:

1 - 安装了 Sendgrid 的邮件包

npm install @sendgrid/mail

2 - 在我的 Sendgrid 帐户上创建了一个 API key

3 - 使用 Firebase 的环境配置将 API key 分配给环境变量:

firebase functions:config:set sendgrid.key=SG.xxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxx_xxxxxx_xxxxxxxxxxxxxxx 

4 - 检查是否正确分配了环境变量:

firebase functions:config:get

结果:

log of firebase environment variable

5 - 导入 sendgrid 邮件并设置 API key :

import * as sgMail from '@sendgrid/mail';

const API_KEY = functions.config().sendgrid.key

const TEMPLATE_ID = functions.config().sendgrid.template
sgMail.setApiKey(API_KEY);

6 - 创建了一个新的用户触发器来发送测试邮件

export const welcomeEmail = functions.auth.user().onCreate(user => {

    const msg = {
        to: user.email,
        from: 'contato@mycompanydomain.com.br',
        templateId: TEMPLATE_ID,
        dynamic_template_data: {
            subject: 'test subject!',
            name: user.displayName,
        },
    };

    return sgMail.send(msg);

})

7 - 已部署的 Firebase 函数:

firebase deploy --only functions

完成此操作后,我希望至少可以正确设置 API key ,但我不断从 firebase 函数日志中收到以下错误:

enter image description here

我不知道哪里出了问题。我已经尝试了一些事情:

1- 创建一个新的 API key 并重新开始整个过程​​。

2- 将 API 直接粘贴到 sgMail.setApiKey() 方法中。喜欢:

sgMail.setApiKey("SG.xxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxx_xxxxxx_xxxxxxxxxxxxxxx")

所有这些都给出了相同的“API key does not start with SG”错误。

你们能帮我找出问题所在吗?

版本

"@sendgrid/mail": "^7.2.1",
"firebase-admin": "^8.10.0",
"firebase-functions": "^3.8.0"

非常感谢

最佳答案

对于遇到同样问题的人,我通过使用新的 firebase 包并从 firebase-functions 导入配置来解决它。 所以我的代码看起来像这样:

import functions, { config } from "firebase-functions";
import sendgrid from "@sendgrid/mail";
const MY_SENDGRID_API_KEY = config().sendgrid.key;
sendgrid.setApiKey(MY_SENDGRID_API_KEY);

关于firebase - 试图弄清楚为什么 Sendgrid 的电子邮件 API 与 Firebase 函数的集成返回 "API key does not start with SG.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62986699/

相关文章:

smtp - 是否可以将 Sengrid 的替换标签与 nodemailer 一起使用?

swift - 从 Firebase 获取特定的 .childrenCount

javascript - firebase存储: Error: storage/unknown No content provider

ios - “禁用”带有条件值的帖子的 segue iOS/Swift

java - 每次调用 isEmailVerified() 都会返回错误条件,即使在验证电子邮件之后

java - 错误 : Failed to resolve : com. google.firebase-core :16. 0.2 受影响的模块:app

php - 覆盖 Laravel Mailer 的 setGlobalTo

c# - 使用 SendGrid 发送电子邮件不适用于 css 样式

Travis 上的 Firebase 部署错误

swift - 使用 Firebase 的 Instagram Oauth