【发布时间】:2017-06-20 06:26:00
【问题描述】:
我有一个使用带有数据库、身份验证和云功能模块的 Firebase 的 Android 应用。当用户通过应用创建个人资料并设置用户全名时,
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
// user signed in
String displayName = user.getDisplayName();
// do whatever with displayName...
} else {
// ....
}
几乎符合预期 - 无论用户输入什么。
我还有一个云功能,可以为新用户创建数据库记录:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.createUserRecord = functions.auth.user().onCreate(function(event) {
const user = event.data;
const userName = user.displayName || 'Anonymous';
const userSignedUp = (new Date()).toJSON();
console.log('A new user signed up: ', user.uid, userName, userSignedUp);
return admin.database().ref('users').push({
name: `${userName}`,
email: `${user.email}`,
ref: `${user.uid}`,
signup: `${userSignedUp}`
});
});
除了日志条目和数据库中的结果记录都将Anonymous 作为名称值之外,这几乎可以正常工作。
谁能告诉我我哪里出了问题?谢谢。
最好的问候,
~托多尔
更新:
忘了提一下,用户是使用电子邮件/密码提供商创建的。
【问题讨论】:
-
对我来说一切正常。我在 Firebase 中的 Google 登录中发现了该问题 [0]。也许它是你的?您是否使用 Google 创建用户? [0] github.com/firebase/quickstart-js/issues/19
-
在 Android 上,当我使用电子邮件/密码创建用户时,
displayName为空。你期待它被定义吗?来源是什么? -
我正在使用 Android Firebase UI 登录并在我的应用中注册 - 当我在第一次登录时创建帐户时,完整的用户名有一个
TextBox.价值来自那里。此名称已正确保存在 Firebase Auth 保存登录名的任何位置,正如应用程序代码所证明的那样,在每次后续登录时都会生成 “Welcome back,!” Toast...看不到此属性的 Cloud 函数 :-(
标签: firebase firebase-authentication google-cloud-functions