Firebase第二代云函数:身份验证阻止触发器无法在控制台注册
我尝试用Firebase第二代云函数实现Blocking auth triggers,已参考官方文档创建并部署函数,但在Firebase身份验证控制台的“阻止函数”标签页中,无法找到已部署的beforeUserCreated、beforeUserSignedIn触发器进行注册。此前使用第一代云函数实现时功能正常且能正常注册触发器,第二代出现此问题。
控制台截图:
我的代码如下:
import functions from 'firebase-functions/v2' import admin from 'firebase-admin' import { beforeUserCreated, beforeUserSignedIn } from 'firebase-functions/v2/identity' import serviceKey from './serviceKey.json' assert {type: 'json'} admin.initializeApp(serviceKey) export const beforecreated = beforeUserCreated((event) => { console.log("EVENT DATA FOR AUTH beforecreated....", event.data) return; }); export const beforesignedin = beforeUserSignedIn((event) => { console.log("EVENT DATA FOR AUTH beforesignedin....",event.data) });
针对第二代云函数的阻塞身份验证触发器,控制台注册逻辑与第一代不同,可按以下步骤修复:
验证函数部署状态
通过Firebase CLI执行firebase functions:list,确认beforecreated和beforesignedin已成功部署,且函数类型分别为identity.beforeUserCreated和identity.beforeUserSignedIn。若部署失败,根据CLI输出的错误信息排查修复。通过CLI绑定触发器
第二代阻塞Auth触发器需通过Firebase CLI命令绑定,而非控制台手动选择。执行以下命令:# 绑定beforeUserCreated触发器 firebase auth:functions:bind beforecreated --trigger-type=beforeUserCreated # 绑定beforeUserSignedIn触发器 firebase auth:functions:bind beforesignedin --trigger-type=beforeUserSignedIn完成后回到Auth控制台的“阻止函数”标签页,即可看到已绑定的触发器。
调整Admin SDK初始化方式
部署第二代函数时,无需手动传入serviceKey初始化Admin SDK,Firebase会自动使用运行时环境的默认凭据。将admin.initializeApp(serviceKey)改为admin.initializeApp(),避免凭据问题导致函数识别异常。升级Firebase CLI版本
旧版本CLI可能不支持第二代阻塞触发器的绑定操作,执行firebase tools:update升级到最新版本。
内容的提问来源于stack exchange,提问作者Mohanish Saim

