Node에서 Axios을 사용하여 Foursquare의 https://api.foursquare.com/v2/photos/add
끝점으로 JPEG 이미지를 가져오고 그 다음 POST
이미지를 가져 오려고합니다. 나는 Axios의 (및 우편 배달부)와 몇 가지 방법을 시도했지만 항상 Missing file upload
의 동일한 오류 응답을 수신했습니다 : 이미지는 Axios의 GET
요청과 구글 정적지도 API를 사용하여 생성 및 검색됩니다Axius로 Fourstquare Checkin으로 사진을 가져 오십시오.
{
"meta": {
"code": 400,
"errorType": "other",
"errorDetail": "Missing file upload",
"requestId": "NNNNNNNNNNNNNNNNNNNNN" // not the true requestId
},
"notifications": [
{
"type": "notificationTray",
"item": {
"unreadCount": 0
}
}
],
"response": {}
}
:
const image = await axios.get(imageURL, {
responseType: "arraybuffer"
});
은 async
함수로 랩되고 버퍼를 성공적으로 반환합니다. 데이터는 Buffer
로 읽고 문자열로 변환 :
const imageData = new Buffer(image, "binary").toString();
Here's an example imageData
string합니다. 또한 문자열을 base64
으로 변환하려고 시도했습니다.
이 문자열은 포 스퀘어 엔드 포인트 POST
에디션은 다음 경우 : checkinId
, oauth_token
및 v
PARAMS 모든 유효
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" }
}
);
.
다른 Content-Type
값을 , 다른 솔루션을 포럼 및 여기에있는 몇 가지 다른 솔루션을 인코딩했는데 시도했지만 아무 것도 작동하지 않습니다. 응답 errorDetail은 항상 Missing file upload
라고 말합니다.
문제는 POST
요청이 구조화 된 방법 일 수 있지만 이미지 데이터를 잘못 요청하거나 처리 할 수도 있습니다. 확인하는 눈의 두 번째 (또는 세 번째 또는 네 번째) 세트는 함께 사용하면 도움이 될 것입니다.