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

Google Admin SDK/Directory API 获取用户头像仅返回默认剪影问题

解决方法

  1. 检查服务账号凭证的模拟用户配置
    你调用Directory API时必须配置域管理员身份模拟,仅配置域范围权限是不够的,服务账号本身没有用户私有数据的访问权限,生成凭证时必须指定subject参数为你的域内拥有用户管理权限的管理员邮箱,示例代码如下:
from google.oauth2 import service_account

# 确保已配置正确的权限范围
SCOPES = [
    'https://www.googleapis.com/auth/admin.directory.user.readonly',
    'https://www.googleapis.com/auth/admin.directory.user.photo.readonly'
]
credentials = service_account.Credentials.from_service_account_file(
    '你的服务账号密钥文件路径',
    scopes=SCOPES,
    # 必须填写域管理员邮箱,否则默认以服务账号身份请求,只能拿到默认头像
    subject='admin@你的企业域名.com'
)
  1. 修复users.photos.get方法的解码逻辑
    返回的photoData是URL安全的Base64编码,实际返回内容可能缺失末尾的填充符=,直接解码会出错,需要先补全填充再解码:
import base64

# 从接口响应中取photoData字段
photo_data = api_response.get('photoData')
# 补全Base64填充
if len(photo_data) % 4 != 0:
    photo_data += '=' * (4 - len(photo_data) % 4)
# 解码后直接写入文件即为正常头像文件
decoded_avatar = base64.urlsafe_b64decode(photo_data)
with open('user_avatar.jpg', 'wb') as f:
    f.write(decoded_avatar)
  1. 排查thumbnailPhotoUrl调用问题
    该URL需要携带Google OAuth2身份凭证才能访问,你使用AuthorizedHttp发起请求时,要确保使用的是上述配置了subject参数的凭证生成的请求对象,不要使用未配置模拟用户的凭证生成的请求,也不要直接将URL复制到未登录对应账号的浏览器中访问,否则只能拿到默认剪影。

额外排查提示:先确认你要查询的目标用户确实已经设置了自定义头像,可通过域管理后台查看用户配置,排除目标用户本身使用默认头像的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:54:01