[英]“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.