const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", `Bearer ${accessToken}`);
const requestOptions = {
method: 'POST',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://mybusiness.googleapis.com/v4/accounts/*******/locations/******/media:startUpload", requestOptions)
.then(res => res.json()) // here I got correct format response like this { resourceName: '******' }
.then(res => {
const myHeaders = new Headers();
myHeaders.append("Authorization", `Bearer ${accessToken}`);
myHeaders.append("Content-Type", "image/jpeg");
const file = "<file contents accessed by input element event listener.>";
const requestOptions = {
method: 'POST',
headers: myHeaders,
body: file,
redirect: 'follow'
};
return fetch(`https://mybusiness.googleapis.com/upload/v1/media/${res.resourceName}?upload_type=media`,
requestOptions)
.then(result => {
console.log(result) // got nothing but empty string, status code is 200.
return res;
})
})
.then(res => {
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
const raw = JSON.stringify({"mediaFormat":"PHOTO","locationAssociation":{"category":"ADDITIONAL"},"dataRef":{"resourceName":`${res.resourceName}`}});
myHeaders.append("Content-Type", "application/json");
const requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://mybusiness.googleapis.com/v4/accounts/****/locations/****/media", requestOptions)
.then(response => response.json())
.then(result => console.log(result))
.catch(error => console.log('error', error));
})
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.mybusiness.v4.ValidationError",
"errorDetails": [
{
"code": 1000,
"message": "Fetching image failed."
}
]
}
]
}
}