You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase使用signInWithCredential登录时displayName为null的问题

Google登录后displayName为null的原因及解决方法

这是预期结果吗?

是预期结果。你当前的登录方式仅验证了用户身份并获取了邮箱、头像等基础信息,但未请求获取用户显示名称(displayName)的权限,因此返回null属于正常情况。

如何获取displayName?

要获取displayName,需确保在Google授权流程中请求profile权限,可通过以下两种方式处理:

1. 初始化GoogleAuthProvider时指定权限范围

创建Google授权提供者时,添加profile权限,确保授权流程获取用户个人资料信息:

const provider = new GoogleAuthProvider();
// 添加profile权限以获取displayName
provider.addScope('profile');
// 若需邮箱权限可补充,你已能获取email可根据情况选择
provider.addScope('email');

// 通过标准弹窗或跳转方式完成登录
const result = await signInWithPopup(auth, provider);
const user = result.user;
console.log(user.displayName); // 此时可正常获取值

2. 若必须使用signInWithCredential方式

确保你的token是通过包含profile权限的授权流程获取的。比如前端请求Google授权token时,需在请求参数中包含scope=openid%20email%20profile,这样拿到的token才能解析出displayName,再传入GoogleAuthProvider.credential中使用。

注意:即便用户Gmail账号已设置姓名,若授权流程未请求profile权限,Firebase Auth仍不会返回displayName字段。

内容的提问来源于stack exchange,提问作者sir-haver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:12:00