Google Фото возвращает "ошибка 400: запрос содержит недопустимый идентификатор элемента мультимедиа (INVALID_ARGUMENT)" при добавлении элемента мультимедиа в существующий альбом - PullRequest
0 голосов
/ 30 мая 2019

После получения списка элементов мультимедиа и списка альбомов из Google Photo API (с использованием Go и Google Photo REST API) добавление элементов в альбом возвращает ошибку.

(Примечание: использование веб-интерфейса для добавления элементов в альбом работает нормально).

Код для добавления элемента мультимедиа в альбом:

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
}

Сервер возвращает следующую ошибку:

error 400: Request contains an invalid media item id. (INVALID_ARGUMENT). 

Идентификатор медиа-элемента копируется из поля ID JSON-представления медиа-элемента, возвращенного из поискового запроса . Другие поля элемента мультимедиа кажутся действительными (например, ProductURL).

Что не так в этом batchAddMediaItems запросе? или как получить действительный идентификатор элемента мультимедиа, подходящий для batchAddMediaItems?

Спасибо.

1 Ответ

1 голос
/ 05 июля 2019

Согласно руководству (https://developers.google.com/photos/library/guides/manage-albums),, к сожалению, вы можете добавлять только мультимедийные элементы, загруженные вашим приложением, в альбомы, созданные вашим приложением. Мультимедийные элементы также должны находиться в библиотеке пользователя.

Это был запрос функции на issetracker для организации существующих медиаэлементов (https://issuetracker.google.com/issues/109505022),, но разработчики разрешают работать только с фото / альбомом приложения. Но теперь существует новый запрос функции именно о нашей проблеме, поэтому давайте пометим его вместе (https://issuetracker.google.com/issues/132274769)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...