如何从邮箱地址获取Google用户ID以调用Google People API获取Gmail头像?
嘿,刚好我对Google API这块踩过不少坑,给你两个实用的方案来解决通过邮箱获取用户ID的问题:
方案1:直接用Google People API(通用场景)
其实你完全不用换API——Google People API本身就支持通过邮箱地址获取用户ID,刚好能衔接你后续拿头像的需求。具体操作步骤:
- 先确保你的应用已经获取了合适的OAuth2权限范围,比如
https://www.googleapis.com/auth/contacts.readonly(用于查询联系人)或者更宽泛的https://www.googleapis.com/auth/userinfo.profile(用于获取已授权用户的信息)。 - 调用
people.get接口时,把resourceName参数设置为people/email:{目标邮箱地址},比如people/email:john.doe@gmail.com。 - 接口返回的响应里,
resourceName字段会是类似people/1234567890abcdef的格式,斜杠后面的字符串就是你要的用户ID。
举个curl请求的示例:
curl "https://people.googleapis.com/v1/people/email:john.doe@gmail.com?personFields=metadata" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
返回结果里的metadata.source.id就是用户ID,直接拿来用就行。
方案2:Google Workspace Admin Directory API(仅限Workspace域管理员)
如果你的应用是服务于Google Workspace(原G Suite)域的管理员,那用Directory API会更直接:
- 需要授权
https://www.googleapis.com/auth/admin.directory.user.readonly这个权限范围。 - 调用
users.get接口,把userKey参数设为目标邮箱地址,就能直接拿到包含用户ID的完整用户信息。
示例请求:
curl "https://admin.googleapis.com/admin/directory/v1/users/john.doe@yourdomain.com" \ -H "Authorization: Bearer YOUR_ADMIN_ACCESS_TOKEN"
响应里的id字段就是你需要的用户ID,而且还能顺带拿到其他域用户的信息。
关键注意事项
- 对于People API:如果要查询的用户不在当前授权用户的联系人列表里,可能会返回权限错误,这时候需要确保你有足够的权限,或者目标用户已经授权你的应用访问他们的信息。
- 对于Directory API:只能查询你所管理的Workspace域内的用户,无法查询外部的普通Gmail用户。
内容的提问来源于stack exchange,提问作者go4cas
相关产品推荐
相关产品推荐

