身份验证错误后的 Firebase 用户数据

Posted

技术标签:

【中文标题】身份验证错误后的 Firebase 用户数据【英文标题】:Firebase user data after authentication error 【发布时间】:2019-06-05 07:35:35 【问题描述】:

该功能完美运行,但如果我想打印用户的内容,我会在 firebase 日志中收到以下信息:

函数返回未定义、预期的 Promise 或值

函数是:

exports.accountCreate = functions.auth.user().onCreate(user => 
console.log("--->"+user.data);
console.log("ok");
);

为什么 user.data 无法检索到信息?

谢谢

【问题讨论】:

您必须返回一个值,以指示 Cloud Functions 容器何时完成您的函数。在您的情况下,最后可以是一个简单的return true。见***.com/questions/47128440/…。 【参考方案1】:

Cloud Functions 在托管环境中的容器中运行。环境试图最小化它保持容器运行的时间,并且为了能够做到这一点,它必须知道你的函数何时完成。通常在 javascript 代码中是在最后一个 执行后完成的,但是当您还需要考虑异步操作时,这会变得更加复杂。出于这个原因,Cloud Functions 希望您在函数完成时通知它,在 functions.auth.user().onCreate 的情况下,通过返回值或承诺来通知它。

当您显式返回一个值时,很明显该函数已完成。当您明确返回一个承诺时,很明显该函数需要保持活动状态,直到该承诺被解决/拒绝。不返回值时,不清楚函数处于什么状态。

在您的情况下,修复很简单,例如,您只需在最后一个 之前使用 return true

exports.accountCreate = functions.auth.user().onCreate(user => 
  console.log("--->"+user.data);
  console.log("ok");
  return true;
);

顺便说一句,实际值没有意义,return null 也可以。

【讨论】:

谢谢,我解决了这个问题,但我发现 user.data 给我的结果就像未定义...我知道为什么...

以上是关于身份验证错误后的 Firebase 用户数据的主要内容,如果未能解决你的问题,请参考以下文章

为最终用户处理 Flutter 上的 Firebase 身份验证错误

升级到 Firebase 5 并遇到身份验证问题。无法转换类型“(用户?,错误?)

Firebase 身份验证错误:未定义名称“身份验证”

密码注册后 Firebase 云功能出现未经身份验证的错误

为啥注册用户后 Firebase 实时数据库用户 ID 与 Firebase 身份验证 UID 不匹配?

具有 Firebase 身份验证用户的 Firebase 数据库数据结构