J'essaie de récupérer, puis POST
une image JPEG au point de terminaison https://api.foursquare.com/v2/photos/add
de Foursquare en utilisant Axios dans le nœud. J'ai essayé quelques méthodes avec Axios (et Postman), mais toujours reçu la même réponse d'erreur de Missing file upload
:Récupérer puis POST une photo à un Foursquare Checkin avec Axios
{
"meta": {
"code": 400,
"errorType": "other",
"errorDetail": "Missing file upload",
"requestId": "NNNNNNNNNNNNNNNNNNNNN" // not the true requestId
},
"notifications": [
{
"type": "notificationTray",
"item": {
"unreadCount": 0
}
}
],
"response": {}
}
L'image est créée en utilisant l'API Google Map statique et récupéré avec une demande Axios GET
:
const image = await axios.get(imageURL, {
responseType: "arraybuffer"
});
qui est enveloppé dans une fonction async
et renvoie un tampon avec succès. Les données sont lues dans un Buffer
et converti en une chaîne:
const imageData = new Buffer(image, "binary").toString();
Here's an example imageData
string. J'ai également essayé de convertir la chaîne en base64
.
Cette chaîne est alors POST
ed au point final Foursquare:
const postPhoto = await axios.post(
"https://developer.foursquare.com/docs/api/photos/add?
checkinId=1234&
oauth_token=[TOKEN]&
v=YYYYMMDD",
imageData,
{
headers: { "Content-Type": "image/jpeg" }
}
);
où les checkinId
, oauth_token
et v
params sont tous valides.
J'ai essayé différentes valeurs Content-Type
, base64
codant le imageData
et plusieurs autres solutions trouvées dans les forums et ici sur SO (la plupart datent de plusieurs années), mais rien ne fonctionne. La réponse errorDetail dit toujours Missing file upload
.
Le problème pourrait être la façon dont la demande POST
est structurée, mais je pourrais aussi demander/traiter incorrectement les données d'image. Un 2ème (ou 3ème, ou 4ème) ensemble d'yeux pour vérifier que je mets cela ensemble serait super utile.