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

Keycloak中无法从Google身份提供商获取性别与生日信息

Keycloak集成Google身份提供商无法获取性别和生日属性问题

问题描述

我正在使用Keycloak并将Google作为身份提供商,目前可成功获取用户的姓名、邮箱及头像,但无法获取性别和生日属性。

已尝试的操作:

  • 在Keycloak > Google身份提供商 > 高级设置中添加以下范围:
    • https://www.googleapis.com/auth/user.gender.read
    • https://www.googleapis.com/auth/user.birthday.read
  • 在Keycloak的Google身份提供商设置内创建了gender和birthday映射器
  • 在领域设置下的用户配置文件中添加了gender和birthday属性
  • 通过OAuth 2.0 Playground测试可成功获取性别和生日

使用Keycloak登录界面通过Google登录时,仅能获取用户名、邮箱、名字、姓氏、头像,gender和birthday属性为null。为何已配置范围和映射器,Keycloak仍无法获取这些属性?是否遗漏了额外配置步骤?

排查与解决步骤

1. 修正映射器的属性提取路径

Google返回的性别、生日数据结构和标准OIDC userinfo不同,需确认映射器配置的JSON路径是否正确:

  • 性别:直接使用gender字段(来自Google People API返回)
  • 生日:Google返回的生日是数组结构,需指定具体路径,比如取第一个生日的日期:birthdays[0].date.year、birthdays[0].date.month、birthdays[0].date.day,如果需要拼接成完整生日字符串,可使用脚本映射器自定义处理。

2. 修改用户信息URL为Google People API端点

Keycloak默认的Google用户信息URL是OIDC标准的userinfo端点,该端点不会返回性别和生日数据。需在Keycloak的Google身份提供商设置中,将用户信息URL修改为:

https://people.googleapis.com/v1/people/me?personFields=genders,birthdays

这个URL会调用Google People API,返回包含性别和生日的用户数据。

3. 验证映射器的核心配置

  • 映射类型需选择JSON属性,确保从Google返回的JSON响应中提取字段
  • 目标属性要与领域用户配置文件中添加的gender、birthday属性名称完全一致(大小写敏感)

4. 确认Google Cloud中People API已启用

登录Google Cloud控制台,进入API和服务 > 已启用的API和服务,确保People API处于启用状态。即使OAuth Playground能访问,Keycloak使用的客户端ID也需要对应启用该API。

5. 清除会话重新测试

用户之前的登录会话可能缓存了旧的权限范围,需让用户退出Keycloak和Google登录,清除浏览器缓存后重新登录,确保新的权限范围和配置生效。

内容的提问来源于stack exchange,提问作者Tural Karimli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:03:13