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

Android:通过OAuth 2.0与Firebase从Google+获取性别及出生日期遇问题

解决Google People API获取用户性别/生日失败的问题

我之前也碰到过类似的困扰——Firebase Google认证能正常拿姓名邮箱,但调用People API就卡壳,结合你的情况,给你梳理几个大概率的原因和解决步骤:


1. 确认你用的是People API而非已弃用的Google+ API

Google+ API早在2019年就彻底停用了,现在获取用户个人信息必须用People API。请检查:

  • 你在Google Cloud Console里启用的是People API(不是Google+相关的任何API)
  • 请求的端点是https://people.googleapis.com/v1/people/me,而不是旧的plus.google.com相关地址

2. 权限范围(Scopes)是核心问题

Firebase默认的认证权限只包含profile、email这类基础范围,但获取性别、生日需要额外的敏感权限:

  • 获取性别:https://www.googleapis.com/auth/user.gender.read
  • 获取生日:https://www.googleapis.com/auth/user.birthday.read

你需要做这几步:

  • 在Google Cloud Console的「OAuth同意屏幕」里,把这两个scopes添加到「已授权的范围」列表中
  • 如果你的应用还处于「测试」状态,务必把测试用户的邮箱添加到「测试用户」列表里(否则外部用户会触发权限错误)
  • 确保你的授权流程请求了这些scopes,而不是只请求Firebase默认的基础范围

3. 用对Token类型:Access Token而非ID Token

Firebase登录后会返回两种Token:

  • idToken:用于验证用户身份,不能直接调用People API
  • accessToken:用于调用Google的各类API,包括People API

请检查你的代码,调用People API时,请求头里携带的是Authorization: Bearer {accessToken},而不是ID Token。比如在Firebase Web SDK里,你可以通过user.getIdTokenResult()或者直接从登录返回的用户对象里获取accessToken。

4. 检查API启用状态和项目关联

  • 确认你的Firebase项目和Google Cloud项目是关联的(通常创建Firebase项目时会自动关联,但有时候手动操作可能断开)
  • 登录Google Cloud Console,找到对应的项目,在「API和服务」→「已启用的API和服务」里,确认People API是开启状态

5. 排查具体错误信息

你提到“始终出现相同错误”,但没说具体是什么错误,建议你打印或查看错误响应:

  • 如果是403 Forbidden:大概率是权限范围没加对,或者测试用户没配置
  • 如果是401 Unauthorized:可能是用了无效的Token,或者Token的scopes不匹配
  • 如果是404 Not Found:肯定是请求的端点写错了

内容的提问来源于stack exchange,提问作者KHALLEF FARES

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:38:22