微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在将新用户创建到Firebase Auth服务中时在FireStore集合中创建新对象的Firebase Cloud Function出错了?

如何解决为什么在将新用户创建到Firebase Auth服务中时在FireStore集合中创建新对象的Firebase Cloud Function出错了?

我在Firebase中还很陌生,存在以下问题。

当使用 Firebase身份验证服务在新帐户上注册新用户时,我需要在名为 Users Firestore 集合中创建一个新对象。 功能

我定义并部署了此云功能

exports.newUserSignUp = functions.auth.user().onCreate(user => {
  console.log("NEW USER CREATED: ",user);

  var userObject = {
    displayName : user.displayName,email : user.email,};

 console.log("userObject: ",userObject);

 let result = admin.firestore().doc('Users/').set(userObject);

 return result;

});

当在 Firebase身份验证中创建新用户时执行该功能,但是我在Firebase云功能日志中遇到以下错误

错误认的Firebase应用程序不存在。在使用任何Firebase服务之前,请确保您调用initializeApp()。在FirebaseAppError.PrefixedFirebaseError [作为构造函数](/ srv / node_modules / firebase-admin / lib /下,在FirebaseAppError.FirebaseError [作为构造函数](/srv/node_modules/firebase-admin/lib/utils/error.js:42:28) FirebaseNamespaceInternals.app(/ srv / node_modules / firebase-admin / lib)上的新FirebaseAppError(/srv/node_modules/firebase-admin/lib/utils/error.js:123:28)处的utils / error.js:88:28) FirebaseNamespace.app(/srv/node_modules/firebase-admin/lib/firebase-namespace.js:452:30)处的FirebaseNamespace.ensureApp(/ srv / node_modules / firebase-admin)中的/firebase-namespace.js:101:19) /lib/firebase-namespace.js:468:24)在FirebaseNamespace.fn(/srv/node_modules/firebase-admin/lib/firebase-namespace.js:327:30)在export.newUserSignUp.functions.auth.user中。在on / worker / worker.js:825上的cloudFunction(/srv/node_modules/firebase-functions/lib/cloud-functions.js:133:23)上的onCreate.user(/srv/lib/index.js:20:24) :24

怎么了?我想念什么?我该如何解决

解决方法

假设您正在云功能服务器上使用Admin SDK。您需要的只是这个:

admin.initializeApp()

确保将此功能限制在函数之外,然后您将拥有对admin SDK功能的完全访问权限。

,

该错误表明如果要使用Firebase,则需要初始化SDK,如文档所述,您可以找到有关here的详细信息:

“创建了Firebase项目后,您可以使用将您的服务帐户文件与Google Application Default Credentials结合在一起的授权策略来初始化SDK。

Firebase项目支持Google服务帐户,您可以使用这些帐户从应用程序服务器或受信任的环境中调用Firebase服务器API。如果要在本地开发代码或在本地部署应用程序,则可以使用通过此服务帐户获得的凭据来授权服务器请求。”

您应在Admin对象上的任何其他方法之前调用initializeApp(),例如:

admin.initializeApp({
  credential: admin.credential.cert(servicesAccount),databaseURL: "...",});

const database = admin.firestore();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?