Google 照片 returns "error 400: Request contains an invalid media item id. (INVALID_ARGUMENT)" 将媒体项目添加到现有相册时
Google Photo returns "error 400: Request contains an invalid media item id. (INVALID_ARGUMENT)" when adding a media item into an existing album
从 the Google Photo API 获取媒体项目列表和相册列表后(使用 Go 和 Google Photo REST API),将项目添加到相册 returns一个错误。
(注意:使用 Web 界面将项目添加到相册可以正常工作)。
将媒体项目添加到相册的代码:
func (a Album) AddItems(items ...MediaItem) error {
rel := &url.URL{Path: fmt.Sprintf("/v1/albums/%s:batchAddMediaItems", a.ID)}
u := a.service.baseURL.ResolveReference(rel)
for len(items) > 0 {
ids := []string{}
for i := 0; i < 50 && i < len(items); i++ {
ids = append(ids, items[i].ID)
}
items = items[len(ids):]
toAdd := map[string]interface{}{
"mediaItemIds": ids,
}
bodyData, err := json.Marshal(toAdd)
if err != nil {
return err
}
req, err := http.NewRequest("POST", u.String(), bytes.NewBuffer(bodyData))
if err != nil {
return err
}
resp, err := a.service.client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
respErr := struct {
Error ServerError `json:"error"`
}{}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return err
}
err = json.Unmarshal(body, &respErr)
if err != nil {
return err
}
err = respErr.Error.Error()
if err != nil {
return err
}
}
return nil
}
服务器returns出现以下错误:
error 400: Request contains an invalid media item id. (INVALID_ARGUMENT).
媒体项目 ID 是从 JSON representation of a media item returned from a search request 的 ID 字段中复制的。媒体项的其他字段似乎有效(例如 ProductURL)。
这个 batchAddMediaItems
请求有什么问题?或者如何获得适合 batchAddMediaItems
的有效媒体项目 ID?
谢谢。
根据指南 (https://developers.google.com/photos/library/guides/manage-albums),遗憾的是,您只能将您的应用程序上传的媒体项目添加到您的应用程序创建的相册中。媒体项目也必须在用户的图书馆中。
这是 issuetracker 上组织现有媒体项 (https://issuetracker.google.com/issues/109505022) 的功能请求,但开发人员只允许使用应用程序的 photo/album。
但是现在它存在关于我们问题的新功能请求,所以让我们一起加注星标(https://issuetracker.google.com/issues/132274769)
从 the Google Photo API 获取媒体项目列表和相册列表后(使用 Go 和 Google Photo REST API),将项目添加到相册 returns一个错误。
(注意:使用 Web 界面将项目添加到相册可以正常工作)。
将媒体项目添加到相册的代码:
func (a Album) AddItems(items ...MediaItem) error {
rel := &url.URL{Path: fmt.Sprintf("/v1/albums/%s:batchAddMediaItems", a.ID)}
u := a.service.baseURL.ResolveReference(rel)
for len(items) > 0 {
ids := []string{}
for i := 0; i < 50 && i < len(items); i++ {
ids = append(ids, items[i].ID)
}
items = items[len(ids):]
toAdd := map[string]interface{}{
"mediaItemIds": ids,
}
bodyData, err := json.Marshal(toAdd)
if err != nil {
return err
}
req, err := http.NewRequest("POST", u.String(), bytes.NewBuffer(bodyData))
if err != nil {
return err
}
resp, err := a.service.client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
respErr := struct {
Error ServerError `json:"error"`
}{}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return err
}
err = json.Unmarshal(body, &respErr)
if err != nil {
return err
}
err = respErr.Error.Error()
if err != nil {
return err
}
}
return nil
}
服务器returns出现以下错误:
error 400: Request contains an invalid media item id. (INVALID_ARGUMENT).
媒体项目 ID 是从 JSON representation of a media item returned from a search request 的 ID 字段中复制的。媒体项的其他字段似乎有效(例如 ProductURL)。
这个 batchAddMediaItems
请求有什么问题?或者如何获得适合 batchAddMediaItems
的有效媒体项目 ID?
谢谢。
根据指南 (https://developers.google.com/photos/library/guides/manage-albums),遗憾的是,您只能将您的应用程序上传的媒体项目添加到您的应用程序创建的相册中。媒体项目也必须在用户的图书馆中。
这是 issuetracker 上组织现有媒体项 (https://issuetracker.google.com/issues/109505022) 的功能请求,但开发人员只允许使用应用程序的 photo/album。 但是现在它存在关于我们问题的新功能请求,所以让我们一起加注星标(https://issuetracker.google.com/issues/132274769)