약관에 위배되는 내용이 있어 가려놓습니다.
약관 상 imgur 을 이미지 호스팅용으로 쓰면 안된다고 합니다.
imgur 로 서버 없이 이미지 업로드 후 사용하기
개인 홈페이지를 제작 중에 이미지 업로드는 하고 싶은데, 아무래도 이미지라는 특성 상 파일 용량이 문제가 된다.
하드의 용량을 늘리자니 가상 호스트를 받는 입장에서 요금이 너무나 부담이 된다.
그래서 필요한게 이미지 업로드 대행 서비스.
원래는 업로드 후 수동으로 링크 복사하여 사용하고는 했다.
그러나 사람이란 게으른 동물인지라 좀 더 편하게 할 수 있는 방법이 있진 않을까 하여 찾아본 결과
여러 사이트들 중 imgur 의 developer api 가 가장 훌륭하고 이미 워드프레스에서는 플러그인형태로 만들어 쓰고 있다는 것을 발견하였다.
굉장히 유용하게 쓰일 것 같고 생각보다 알려진 곳도 없기에 기록 겸 소개하려 한다.
일단 http://imgur.com/ 로 이동하여 가입절차를 진행한다.
가입이 완료되었다면, 이제부터 시작이다.
계정 드롭다운 메뉴의 최하단 'settings' 버튼을 찾아 설정 페이지로 들어가면
좌측 applications 메뉴에서 다음과 같은 화면을 볼 수 있다.
필자는 이전에 imgur api 를 사용한 적이 있으므로 생성된 앱(Created Apps) 영역에 데이터가 존재하지만,
이 글을 보고 있는 분들은 저 공간이 비어 있을 것이다.
물론 전혀 상관없으므로, create your own! 링크를 눌러준다.
그럼 드디어 developer api 페이지로 이동할 수 있게 된다.
사실 설명을 위해서 저 곳을 통해 들어온거지 developer api 페이지는 로고 드롭다운 메뉴를 통해 들어올 수도 있다.
다음으로는 앱 등록을 위해 register 링크로 이동해주면,
드디어 앱을 등록할 수 있는 폼을 만나게 된다.
일단 앱 이름 (Application name) 을 입력해주고 아래를 보면
인증 타입 (Authorization type) 이 3개가 주어지는데,
OAuth 2 authorization with a callback URL
OAuth 2 authorization without a callback URL
Anonymous usage without user authorization
순서대로
콜백주소(callback URL) 에서 인증결과를 받는다
콜백주소(callback URL) 없이 인증을 한다
인증 없이 익명으로 사용
이므로 우리는 세번째 옵션(Anonymous usage without user authorization)에 체크할 것이다.
여기서 조심할 것이, 사이트 자체에 버그가 있는지 첫번째 옵션을 선택하고 바로 세번째 옵션을 체크하면
생뚱맞게 callback URL 을 요구한다.
만약 세번째 옵션을 체크했음에도 콜백주소(callback URL)가 필수(Required)라고 오류를 뱉으면
두번째 콜백주소(callback URL)가 없는 옵션을 체크한 후 세번째 옵션을 체크하길 바란다.
다음은 Email 을 입력해야 한다. Required 영역이다.
Description 은 굳이 입력하지 않아도 된다.
아직은 이 api 를 사용할 만큼 똑똑한 로봇이 없을 것이니 어서 "로봇이 아닙니다." 를 체크한 후 submit 버튼을 누른다.
위와 같은 페이지가 보이는가? 그럼 이제 다 됬다.
이미지 업로드를 위하여 우리가 사용할 API는 imgur 의 endpoints/image/Image Upload 이다.
다음 링크(https://api.imgur.com/endpoints/image) 에서도 확인할 수 있지만 Image Uplaod api 는 다음과 같은 구조를 가지고 있다.
사실 이것만 있어도 뭘 좀 아는 사람들은 알아서 쓸테지만, 난 모두들 이 좋은걸 사용해봤으면 한다.
무슨 언어든 상관없다. HTTP 통신이 가능하면 된다.
주소는 https://api.imgur.com/3/image/ 로 메소드는 POST, 컨텐츠는 이미지의 바이너리 데이터가 되야 한다.
또한 헤더의 Authorization 에 Client-ID (Client ID) 를 넣어줘야 된다 .. 의 내용을 javascript 로 코딩해봤다.
response 는 다음과 같이 도착한다.
{
"data": {
"id": "MZbiTph",
"title": null,
"description": null,
"datetime": 1480555815,
"type": "image/png",
"animated": false,
"width": 1097,
"height": 328,
"size": 25283,
"views": 0,
"bandwidth": 0,
"vote": null,
"favorite": false,
"nsfw": null,
"section": null,
"account_url": null,
"account_id": 0,
"is_ad": false,
"in_gallery": false,
"deletehash": "CN10lEWlexYbvYT",
"name": "",
"link": "http://i.imgur.com/MZbiTph.png"
},
"success": true,
"status": 200
}
유용한 api 이며
속도도 나쁘지 않고 지명도도 있기에 지워질 걱정도 덜하다고 본다.