0

我正在尝试使用 Google Photos API 创建媒体项目。端点记录在这里。如果我将有效负载复制并粘贴到可以在文档中找到的 API 资源管理器,我会成功: Request inputed to an API Explorer和Success 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' } }

这里有什么问题?

任何帮助表示赞赏,谢谢。

4

1 回答 1

0

看起来您在调用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' 示例

于 2019-03-11T06:29:04.290 回答