【问题标题】:Unable to retrieve auth properties from firebase cloud function无法从 Firebase 云功能检索身份验证属性
【发布时间】:2025-12-12 09:10:01
【问题描述】:

我编写了一个可调用的云函数,它需要用户身份验证详细信息,文档说它会自动发送到云函数,但我无法访问它。

export const createProfile = functions.https.onCall((data, context) => {
    const driver = neo4j.v1.driver("uri", neo4j.v1.auth.basic("usr", "pwd")
    )
    const session = driver.session()

    session.writeTransaction(wrte=>
      wrte.run('CREATE (a:Person) SET a.name ={displayName}, a.emailAddress={emailAddress}, a.uniqueID ={uniqueID}  RETURN a', 
      {displayName: 'Vinay', uniqueID: context.auth.uid, emailAddress: context.auth.token.email })
      )
}

【问题讨论】:

  • 当您调用云函数时,这些值实际上是未定义的吗?您的 IDE 中的该消息只是一个警告,这并不意味着它们实际上会在运行时 未定义,只是它们可以是,如果它们会抛出错误。跨度>

标签: node.js typescript firebase-authentication google-cloud-functions


【解决方案1】:

context 上的 auth 属性在 TypeScript 中定义为可能未定义。注意属性定义中的问号。 Auth 是这样定义的,因为在调用 callable 时可能没有用户登录到应用程序,这就是 SDK 向您发出这种情况的信号的方式。

这意味着您应该在使用 is 属性之前检查 undefined,因为这会在运行时崩溃。

if (context.auth) {
    // now it's safe to use context.auth.id,
    // since TypeScript is sure that context.auth can't be undefined.
}

【讨论】: