集成Google身份提供商时,如何获取用户Google Workspace组织信息?
解决方案:获取Google用户组织信息用于权限管控
为什么People API没返回组织信息
People API的organizations字段仅返回用户主动添加到Google个人资料中的组织信息,并非用户所属的Google Workspace(原G Suite)域组织信息。如果用户没在个人资料里填写组织,接口自然不会返回相关数据。
针对Google Workspace用户的解决方案
如果你的应用面向Google Workspace企业用户,可使用Admin SDK Directory API的users.get接口,获取用户所属的组织单元和域信息:
- 调用接口:
GET https://admin.googleapis.com/admin/directory/v1/users/{userKey} - 需要的权限范围:
https://www.googleapis.com/auth/admin.directory.user.readonly - 响应中会包含
orgUnitPath(用户所属组织单元路径)、primaryEmail(带域的邮箱,可判断所属域)等字段,可直接用于权限管控逻辑。
注意:使用该API需要你的Google Cloud项目已启用Admin SDK,且调用者需拥有Workspace管理员权限(或被授予相应的用户读取权限)。
针对普通Google账号用户的限制
如果你的应用面向普通Google账号(非Workspace用户),目前没有官方API能获取用户的所属组织——普通Google账号没有强制绑定的组织实体,仅能依赖用户手动在个人资料中填写组织信息,通过People API的organizations字段获取,但这种数据不可靠,无法作为权限管控的依据。
额外注意事项
- 确保在OAuth授权时,请求了正确的权限范围:
- 若用People API,需请求
https://www.googleapis.com/auth/userinfo.profile(适合获取个人资料信息) - 若用Admin SDK,需请求上述的用户只读权限
- 若用People API,需请求
- 测试时,使用Workspace账号并确保该账号属于某个组织单元,同时调用者拥有管理员权限。
内容的提问来源于stack exchange,提问作者Renzo Sunico
相关产品推荐
相关产品推荐

