猿问
下载APP

在Firebase用户表上添加额外详细信息


在Firebase用户表上添加额外详细信息

我正在使用firebase + angularjs应用程序,我正在使用简单的电子邮件和密码验证,它正常工作。

我只是想知道我是否可以在firebase email + password auth使用的用户表上添加额外的用户数据,就像我想添加有关用户的计费信息和其他详细信息而无需在firebase上创建额外的节点/表来存储这些额外的数据。


四季花海
浏览 62回答 3
3回答

holdtom

Firebase将电子邮件/密码用户存储在您无法直接访问的单独位置。您无法在此位置展开数据。由于许多应用程序开发人员希望在其应用程序代码中访问用户数据,因此将所有用户存储/users在应用程序数据库本身内的节点下是一种常见做法。缺点是你必须自己做。但积极的一面是,如果你愿意,你可以存储任何额外的信息。有关示例代码的用户数据存储,请参阅Firebase指南。从那里:var&nbsp;ref&nbsp;=&nbsp;new&nbsp;Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");ref.onAuth(function(authData)&nbsp;{ &nbsp;&nbsp;if&nbsp;(authData&nbsp;&&&nbsp;isNewUser)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;save&nbsp;the&nbsp;user's&nbsp;profile&nbsp;into&nbsp;Firebase&nbsp;so&nbsp;we&nbsp;can&nbsp;list&nbsp;users, &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;use&nbsp;them&nbsp;in&nbsp;Security&nbsp;and&nbsp;Firebase&nbsp;Rules,&nbsp;and&nbsp;show&nbsp;profiles &nbsp;&nbsp;&nbsp;&nbsp;ref.child("users").child(authData.uid).set({ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;provider:&nbsp;authData.provider, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;getName(authData) &nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;}});

喵喵时光机

注意:此方法仅在您使用Firebase Admin SDK并且您需要在服务器上具有端点以管理自定义令牌时才有效Firebase Admin SDK可以选择使用其他声明对象创建自定义令牌,该对象可以包含任意数据。这可能有助于存储一些与用户相关的信息,例如用户是否是高级用户。可以使用auth对象访问其他声明数据。例var&nbsp;uid&nbsp;=&nbsp;"some-uid";&nbsp;//this&nbsp;can&nbsp;be&nbsp;existing&nbsp;user&nbsp;UIDvar&nbsp;additionalClaims&nbsp;=&nbsp;{ &nbsp;&nbsp;&nbsp;premiumAccount:&nbsp;true, &nbsp;&nbsp;&nbsp;some-user-property:&nbsp;'some-value'};admin.auth().createCustomToken(uid,&nbsp;additionalClaims) &nbsp;&nbsp;.then(function(customToken)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Send&nbsp;token&nbsp;back&nbsp;to&nbsp;client &nbsp;&nbsp;}) &nbsp;&nbsp;.catch(function(error)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("Error&nbsp;creating&nbsp;custom&nbsp;token:",&nbsp;error);});additionalClaims&nbsp;也可以在Firebase安全规则中访问。有关更多信息,请阅读Firebase自定义标记

冉冉说

Firebase有一组固定的用户属性,可以更新但不能添加到用户属性中。但是,您可以使用序列化和反序列化来添加少量数据&nbsp;JSON.stringify() &nbsp;and JSON.parse()然后使用任何一个未使用的属性来存储字符串在DisplayName或photoURL属性中。请记住,可添加的数据必须小,并存储为字符串。这只能使用FIREBASE SDK中的方法,而不是如下所示的angularfirevar&nbsp;user&nbsp;=&nbsp;firebase.auth().currentUser;user.updateProfile({ &nbsp;&nbsp;displayName:&nbsp;"Jane&nbsp;Q.&nbsp;User", &nbsp;&nbsp;photoURL:&nbsp;"https://example.com/jane-q-user/profile.jpg"}).then(function()&nbsp;{ &nbsp;&nbsp;//&nbsp;Update&nbsp;successful.},&nbsp;function(error)&nbsp;{ &nbsp;&nbsp;//&nbsp;An&nbsp;error&nbsp;happened.});您可以在此处以字符串形式在photoURL或displaYName变量中存储更多类似json的数据。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答