[英]“Failed: There was an error while trying to create this media item.”
我正在尝试使用 google api 在 Google Photos 上上传照片,但我总是收到此错误:
"status":{"code":3,"message":"Failed: There was an error while trying to create this media item."}}
我认为问题在于我获取照片二进制数据的方式。
在此代码中,我遵循谷歌照片 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));
}
});
}});
请帮助我,如果有人有任何想法!
这个改装怎么样?
encoding: "binary"
不是必需的。
and
可以使用 const photo = fs.readFileSync("fig1.png");`。body: JSON.stringify(body)
修改为 const photo
const photo = fs.readFileSync("fig1.png", { flag: "r" });
.当以上几点反映到您的脚本时,它变成如下。
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) {
token
可用于此 API。 请注意这一点。https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate
albumId
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.