能否修改Firebase Authentication用户标识符?Token登录场景自定义显示
解决Firebase控制台自定义令牌登录用户标识符显示横线的问题
我之前在项目里用自定义令牌登录Firebase Auth时也碰到过这个问题,控制台用户列表里的标识符列一直显示横线,研究后发现是因为这类用户默认没有设置Firebase识别的标准用户属性,下面给你两种可行的解决方案:
方案一:提前创建用户并设置属性(推荐)
如果你能提前知晓用户的信息(比如用户名),可以先用Firebase Admin SDK创建用户时就设置displayName或email字段,再基于该用户的UID生成自定义令牌。这样用户登录后,控制台会自动把你设置的属性作为标识符显示。
举个Node.js的代码示例:
const admin = require('firebase-admin'); // 初始化Admin SDK(确保你已经配置了服务账号) admin.initializeApp(); // 创建用户并设置displayName admin.auth().createUser({ uid: 'user-12345', // 自定义用户ID,要和后续生成令牌的UID一致 displayName: 'Bootsie123', // 你想在控制台显示的用户名 // 可选:如果有邮箱也可以设置,优先级比displayName高 // email: 'user@example.com' }) .then(userRecord => { // 基于该用户生成自定义令牌 return admin.auth().createCustomToken(userRecord.uid); }) .then(customToken => { // 将令牌返回给客户端用于登录 console.log('生成的自定义令牌:', customToken); }) .catch(err => { console.error('创建用户或生成令牌失败:', err); });
方案二:用户首次登录后更新属性
如果无法提前创建用户,也可以在用户首次通过自定义令牌登录后,在客户端或服务器端更新用户的displayName属性。更新完成后,刷新控制台就能看到标识符替换了横线。
客户端(Web)的代码示例:
firebase.auth().signInWithCustomToken(yourCustomToken) .then(userCredential => { const currentUser = userCredential.user; // 更新用户的displayName return currentUser.updateProfile({ displayName: '你的自定义用户名' }); }) .then(() => { console.log('用户信息更新成功,控制台标识符已更新'); }) .catch(err => { console.error('登录或更新失败:', err); });
补充说明
Firebase控制台的标识符列显示优先级是:email > phoneNumber > displayName,如果这些字段都为空,就会显示横线。所以只要你给用户设置了其中任意一个字段,就能替换掉默认的横线显示。
内容的提问来源于stack exchange,提问作者Bootsie123
相关产品推荐
相关产品推荐

