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

调用Google Photos API批量添加媒体项至相册遇400无效ID错误

排查Google Photos API batchAddMediaItems的INVALID_ARGUMENT错误

我来帮你定位这个问题,你遇到的400: Request contains an invalid media item id错误,结合你的代码和场景,大概率和以下几个点有关:

1. 缺失关键的请求头

你的代码构造POST请求时,没有设置Content-Type: application/json头!这是最常见的问题——服务器收到请求后,无法正确解析你发送的JSON格式body,进而错误地判定媒体项ID无效。

修改代码,在创建req对象后添加这个请求头:

req, err := http.NewRequest("POST", u.String(), bytes.NewBuffer(bodyData))
if err != nil {
    return err
}
// 必须添加这个头,告知服务器请求体是JSON格式
req.Header.Set("Content-Type", "application/json")
resp, err := a.service.client.Do(req)

2. OAuth权限范围不匹配

你获取媒体项ID时使用的OAuth授权权限,可能和执行batchAddMediaItems所需的权限不匹配:

  • 如果获取媒体项时用的是photoslibrary.readonly只读权限,那么拿到的ID无法用于修改操作(比如添加到相册);
  • batchAddMediaItems需要至少photoslibrary.appendonly权限,或者更全面的photoslibrary权限(生产环境建议用最小必要权限)。

请确认你的OAuth授权流程中,请求了正确的权限范围。

3. 媒体项ID的有效性验证

虽然你提到媒体项的ProductURL有效,但还是建议你:

  • 打印日志输出要添加的ids数组,确认每个ID都是完整的、无多余空格的字符串(API使用的媒体项ID通常是类似AF1QipM...的长随机字符串);
  • 如果你操作的是共享相册中的媒体项,需要确保你拥有将该媒体项添加到目标相册的权限(比如目标相册是你自己创建的,且你对共享媒体项有访问权限)。

4. 批量请求的边界检查

你的代码已经控制了每次批量最多50个ID,这符合Google Photos API的限制(batchAddMediaItems单次请求最多支持50个媒体项),这部分是没问题的。

先尝试添加Content-Type请求头,这应该能解决绝大多数这类问题,如果还是报错再检查权限和ID格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:11:33