Firebase函数auth.generateEmailVerificationLink()生成具有错误apiKey的链



我有一个带有dev和prod版本的Firebase函数项目。在那里,我使用auth.generateEmailVerificationLink((为新创建的用户发送电子邮件验证。除了在prod环境中(本地或托管测试(之外,一切都很好。auth.generateEmailVerificationLink((生成的链接中的apiKey与Firebase的默认apiKey不同。点击该链接,我得到了错误代码的页面:

Try verifying your email again
Your request to verify your email has expired or the link has already been used

请注意,当我使用错误的apiKey获得链接时,如果我将其更改为正确的apiKey。验证有效。因此,整个问题似乎与生成的电子邮件验证链接中的错误apiKey有关
还要注意,错误的apiKey不是随机密钥,而是在谷歌地图api的项目前端使用的。

代码本身很简单。(我省略了创建用户等的代码,因为这些部分都能完美工作(
-初始化管理SDK:

import { initializeApp } from 'firebase-admin/app';
import { getAuth } from 'firebase-admin/auth';
initializeApp();
const auth = getAuth();
export { auth };

-生成电子邮件验证电子邮件

const sendEmail = async () => {
const actionCodeSettings = {
// This url is working correctly, it is the same as in Firebase console
// and when changing the wrong apiKey to correct redirecting works correctly
url: process.env.DOMAIN as string,
};
await auth
.generateEmailVerificationLink(email, actionCodeSettings) // email is the email of newly created user
.then((link) => {
// generate email message with link
// generate mailOptions
// use transporter to send email
});
};

感谢您的帮助

EDIT
我测试过删除";错误的";apiKey,并将其替换为另一个。然后在本地运行该功能,一切正常;错误的";仍然在验证电子邮件链接中,即使它已经不存在了。

Firebase强烈建议,如果在云功能等中使用Admin SDK,则应在没有参数的情况下初始化应用程序
https://firebase.google.com/docs/admin/setup#initialize-没有参数
对我来说,似乎是因为某种原因;错误的";现在甚至从某个地方删除了apiKey以供使用。

我注意到,与开发项目不同,Web Api Key(项目设置>常规(与Web App的firebaseConfig apiKey不同,从而解决了这个问题
因此,我添加了对GCP凭据中找到的此Web Api密钥的正确权限(电子邮件验证电子邮件需要使用Identity Toolkit Api(,现在云功能发送具有正确且有效的apiKey的电子邮件验证电子邮件。