В запросе должен быть хотя бы один newMediaItem - API Google Фото - PullRequest
0 голосов
/ 10 марта 2019

Я пытаюсь создать элемент мультимедиа с помощью Google Photos API.Конечная точка задокументирована здесь .Если я копирую и вставляю свою полезную нагрузку в проводник API, который можно найти в документации, я получаю: запрос, введенный в обозреватель API и успешный ответ .

Если я делаю то же самое в моей программе node js, я получаю сообщение об ошибке.

Вот что я делаю:

const accessToken = "MyAccessToken";
payload = {
    "newMediaItems": [
        {
            "description": "picture",
            "simpleMediaItem": {
                "uploadToken": "CAIS+QIASsyg4OQLX2Ao5hy6I734/b01mjk3Mqpom6DQ24iv7ZfAYLiXAy0WpOXCWJBNHrmBs6FE+a9Axu5CML+Ryu4VGawyf4skxM763mzC5GcjMY4rS/r6IwOekBIoE/aMJLJpRr1gW8jdhVJM89+kioTx9d+shyYeQDbVI8ezb1lXGp6irc9hZl7QA6xd+msXzbLD5nb+wc5CA6du95tP3buh5R5N/Knn+NwByebdEPCusl+X3p7DZ6ha72kLthUqdvwFsp8dpnGbNQBq8AFPVNHXB4C543iq+dYiRFYtICCxO8xi2cpONVT54Jl6l9rGh3Vnidwj5IwkbsXkyiN96HfRb9XLh0rCBw4ydV6Y9+C+OmTAqlQwIKy50I/ykHyzggroeJSbgphiQwFR2EbHwAeSKdsdIB03ItnunHtf3F2LRIitDRGI1n4VUEYE1dYjrrjR791ao24Dp8J3Hg8IRb8E3vFTeYMWyOk4mh/zQGInfNBnRY2ruHH0JA"
            }
        }
    ]
};
   const response = await fetch('https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate', {
        method: "POST",
        headers: {
            "Content-Type": "application/json",
            "Authorization": `Bearer ${accessToken}`
        },
        payload: JSON.stringify(payload)
    });
    const json = await response.json();
    console.log(json);

И получаю ответ:

{ error:
   { code: 400,
     message: 'Request must have at least one newMediaItem.',
     status: 'INVALID_ARGUMENT' } }

Что здесь может пойти не так?

Спасибо за помощь, спасибо.

1 Ответ

0 голосов
/ 11 марта 2019

Похоже, что вы устанавливаете полезную нагрузку JSON в неправильном параметре при вызове на fetch. Это должно быть установлено в параметре body (а не в payload). Сам JSON выглядит хорошо.

Этот фрагмент должен работать:

const response = await fetch('https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate', {
        method: "POST",
        headers: {
            "Content-Type": "application/json",
            "Authorization": `Bearer ${accessToken}`
        },
        body: JSON.stringify(payload)
});

Источник: node-fetch 'Post with JSON' пример

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