请求中必须至少包含一个newMediaItem-Google Photos API

时间:2019-03-10 14:14:44

标签: google-photos-api

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

这里可能出什么问题了?

感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

似乎您在对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