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
相关产品推荐
相关产品推荐

