Javascript &引用;失败:尝试创建此媒体项目时出错。”;

Javascript &引用;失败:尝试创建此媒体项目时出错。”;,javascript,node.js,google-photos-api,Javascript,Node.js,Google Photos Api,我正在尝试使用Google api在Google Photos上上传照片,但我总是遇到以下错误: "status":{"code":3,"message":"Failed: There was an error while trying to create this media item."}} 我认为问题在于我拍摄照片的二进制数据的方式 在这段代码中,我遵循google photo api开发者文档,它说,在获得授权后: 1-将原始字节上载到Google服务器:获取上载令牌 2-使用上载令牌

我正在尝试使用Google api在Google Photos上上传照片,但我总是遇到以下错误:

"status":{"code":3,"message":"Failed: There was an error while trying to create this media item."}}
我认为问题在于我拍摄照片的二进制数据的方式

在这段代码中,我遵循google photo api开发者文档,它说,在获得授权后: 1-将原始字节上载到Google服务器:获取上载令牌 2-使用上载令牌创建媒体项

这是我的节点js代码:

const photo = fs.readFileSync("fbimages/"+req.session.id_client+"/Prague/2020-05-30T17:29:14+0000_0.png", {
            'encoding': 'binary',
            'flag' : 'r'
        });


 var url= 'https://photoslibrary.googleapis.com/v1/uploads';
 var headers= {
     'Authorization': 'Bearer '+token,
     'Content-type': 'application/octet-stream',
     'X-Goog-Upload-Content-Type': 'image/png',
     'X-Goog-Upload-Protocol': 'raw',
     'X-Goog-Upload-File-Name': "2020-05-30T17:29:14+0000_0.png",
 };
 var body= photo

 request({
      url: url,
      method:'POST',
      headers: headers,
      rejectUnauthorized: false,
      body: JSON.stringify(body)
  }, function(error, response, body1){
      if(error)
      {
        console.log(error);
      }
      else
      {
         var upToken = body1.toString();

         console.log(upToken);

         var url= 'https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate';
         var headers= {
             'Authorization' : 'Bearer '+token,
             'Content-type': 'application/json',
         };
         var body= {
             'newMediaItems': [
                 {
                   'description': 'Prague',
                   'simpleMediaItem': {
                         'fileName': 'prova',
                         'uploadToken': upToken,
                    }
                 }
             ]
         };
         request({
             url: url,
             method: 'POST',
             headers: headers,
             rejectUnauthorized: false,
             body: JSON.stringify(body),

           }, function(error, response, body){
              if(error)
              {
                 console.log(error);
               }
               else
               {
                  res.send(JSON.parse(body));
                }
          });
   }});

如果有人有任何想法,请帮助我

这次修改怎么样

修改点:
  • 我认为不需要
    编码:“binary”
    • 在本例中,`constphoto=fs.readFileSync(“fig1.png”,{flag:“r”})
      constphoto=fs.readFileSync(“fig1.png”);`可以使用
  • 请将
    constphoto=fs.readFileSync的
    body:JSON.stringify(body)
    修改为
    photo
    (“fig1.png”,{flag:“r”})
当上述各点反映到脚本中时,它将变成如下所示

修改脚本: 发件人: 致: 注:
  • 在这次修改中,它假定您的
    令牌可以用于此API。请小心这个
  • 当您想直接将上传的图像放入alubmn时,请包括
    albumId
    以请求
    https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate
参考:

非常感谢,我用:
var file=fs.readFileSync(“fbimages/”+req.session.id\u client+“/”+titolo+“/”+foto,'binary');var photo=Buffer.from(文件'binary')
const photo = fs.readFileSync("fbimages/"+req.session.id_client+"/Prague/2020-05-30T17:29:14+0000_0.png", {
            'encoding': 'binary',
            'flag' : 'r'
        });


 var url= 'https://photoslibrary.googleapis.com/v1/uploads';
 var headers= {
     'Authorization': 'Bearer '+token,
     'Content-type': 'application/octet-stream',
     'X-Goog-Upload-Content-Type': 'image/png',
     'X-Goog-Upload-Protocol': 'raw',
     'X-Goog-Upload-File-Name': "2020-05-30T17:29:14+0000_0.png",
 };
 var body= { 'media-binary-data': photo }

 request({
      url: url,
      method:'POST',
      headers: headers,
      rejectUnauthorized: false,
      body: JSON.stringify(body)
  }, function(error, response, body1){
const photo = fs.readFileSync("fbimages/"+req.session.id_client+"/Prague/2020-05-30T17:29:14+0000_0.png", { flag: "r" });

var url = "https://photoslibrary.googleapis.com/v1/uploads";
var headers = {
  Authorization: "Bearer " + token,
  "Content-type": "application/octet-stream",
  "X-Goog-Upload-Content-Type": "image/png",
  "X-Goog-Upload-Protocol": "raw",
  "X-Goog-Upload-File-Name": "2020-05-30T17:29:14+0000_0.png",
};

request(
  {
    url: url,
    method: "POST",
    headers: headers,
    rejectUnauthorized: false,
    body: photo,
  },
  function (error, response, body1) {