如何使用Firebase的useAuthState获取GitHub登录名
Firebase GitHub登录获取账号登录名解决方案
useAuthState返回的Firebase User对象仅同步基础公开字段,GitHub登录名属于第三方提供方的自定义返回字段,不会默认包含在返回结果中,按以下步骤获取即可:
- 登录阶段抓取GitHub登录名并存储
在触发GitHub登录的逻辑(signInWithPopup或signInWithRedirect)中,登录成功后调用getAdditionalUserInfo方法即可拿到GitHub返回的完整用户信息,其中profile.login字段就是你需要的GitHub登录名,拿到后存入全局状态或localStorage方便跨组件调用,参考代码:
import { getAuth, signInWithPopup, GithubAuthProvider, getAdditionalUserInfo } from "firebase/auth"; const auth = getAuth(); const githubProvider = new GithubAuthProvider(); signInWithPopup(auth, githubProvider) .then((res) => { const githubExtraInfo = getAdditionalUserInfo(res); const githubLoginName = githubExtraInfo?.profile?.login; if (githubLoginName) { // 存入本地存储或者全局状态管理工具(Redux/Zustand等) localStorage.setItem('github_login_name', githubLoginName); } })
如果你使用的是Firebase v8版本,对应获取写法为res.additionalUserInfo.profile.login,其余逻辑不变。
- 组件内调用
需要使用登录名的组件直接从你存储的位置读取即可,无需依赖useAuthState的返回结果。如果有其他GitHub用户字段需要获取,也可以在githubExtraInfo.profile中同步提取。
内容的提问来源于stack exchange,提问作者Riya Patel
相关产品推荐
相关产品推荐

