请求必须至少有一个 newMediaItem - Google 照片 API

Request must have at least one newMediaItem - Google Photos API

我正在尝试使用 Google 照片 API 创建媒体项目。记录端点 here。如果我将我的有效负载复制并粘贴到可以在文档中找到的 API 资源管理器,我会成功: Request inputed to an API Explorer and Successful response.

如果我在我的 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' } }

这里会出什么问题?

感谢任何帮助,谢谢。

您在调用 fetch 时似乎在错误的参数中设置了 JSON 负载。它应该在参数 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' example