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 APIaccessToken:用于调用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
相关产品推荐
相关产品推荐

