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

Microsoft OAuth登录后如何获取用户邮箱与显示名?(Firebase场景)

获取Firebase微软认证用户的邮箱和显示名

你不需要从credential中解析用户信息,登录成功后,signInWithPopup返回的结果对象里的user属性就是Firebase User实例,直接从中提取displayName和email即可。如果遇到字段为空的情况,需要确保微软授权时请求了对应的权限范围。

修改后的代码示例:

export function* signInWithMicrosoft() {
  yield microsoftProvider.setCustomParameters({
    prompt: 'consent',
    tenant: 'consumers',
  });
  // 显式添加权限范围,确保能获取邮箱和用户基本信息
  yield microsoftProvider.addScope('email');
  yield microsoftProvider.addScope('profile');

  const res = yield signInWithPopup(auth, microsoftProvider);
  
  // 直接从res.user提取所需信息
  const user = res.user;
  const displayName = user.displayName;
  const email = user.email;

  console.log('用户显示名:', displayName);
  console.log('用户邮箱:', email);

  try {
    const credential = yield OAuthProvider.credentialFromResult(res);
    const { accessToken, idToken } = credential;

    yield console.log(credential);
  } catch (err) {
    return err;
  }
}

关键说明:

  • res.user是Firebase Auth封装的User对象,内置了displayName、email、uid、photoURL等常用字段,这是获取用户基础信息的最直接方式。
  • 若displayName或email为空,检查是否添加了email和profile权限范围——微软OAuth默认可能需要显式声明这些范围,才能返回对应的用户数据。
  • credential对象主要用于获取accessToken和idToken,适用于调用微软Graph API等进阶场景,并非获取基础用户信息的首选途径。

内容的提问来源于stack exchange,提问作者Azrael 998

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:47:13