[티스토리] 파일 업로드 구현하기
개발 •
참고 : 확인해보니 티스토리 Access Token의 유효 기간이 1시간밖에 되질 않습니다. 늘릴 방법은 없고요. 만약 이 방법을 사용하시려면 1시간마다 토큰을 갱신해야 합니다.
얼마 전 제 블로그에 구현한 댓글 이미지 첨부와 비슷한 기능을 티스토리 API로 구현하는 방법입니다.
시작하기 전
기본적으로 티스토리는 모든 댓글을 텍스트 취급하기 때문에, 이미지 링크 등을 찾아 이미지로 변환해주는 작업이 필요합니다.
이 포스트를 참고하시면 해당 기능을 추가하실 수 있습니다.
API 등록
오픈 API 앱 등록 페이지에서 위 사진처럼 입력창을 채웁니다.
서비스 URL은 본인 블로그의 주소를 입력하시면 되고, CallBack은 아무런 주소나 사용하셔도 됩니다.
등록이 끝나면 App ID를 확인하실 수 있습니다.
{client-id}
는 App ID로
{redirect-uri}
는 CallBack에 입력한 주소로 변경하시고 위 주소로 들어가시면 CallBack에 입력한 주소로 리다이렉트되며 주소 끝에 #access_token={token}&state=
란 형식으로 Access Token이 반환됩니다. 토큰을 복사해둬 주세요.
HTML 업데이트
스킨 편집 > HTML에서 _rp_input_comment_
를 검색하면 textarea가 하나 나올 겁니다. 해당 textarea에 id가 없다면 commentTextarea라는 id를 추가해주세요.
그 아래 보이는 것처럼 label과 input#fileUpload
도 추가해주세요.
굳이 .attach-wrapper
안에 추가하실 필요 없이 본인의 재량껏 하시면 됩니다.
input#fileUpload
는 display: none
으로 숨기시는 걸 추천합니다. 가능하면 위에 작성한 것처럼 인라인 스타일보단 CSS를 수정해서 숨겨주세요.
제 티스토리 댓글 창입니다. 위에서 보실 수 있듯 input#fileUpload
는 숨겨주시는 게 미관상 훨씬 좋습니다.
Javascript 추가
input#fileUpload의 변화를 감지해 파일이 추가되면 업로드하는 스크립트입니다.
{access-token}
엔 Access Token을
{blog-name}
엔 블로그 이름(xxx.tistory.com에서 xxx)을 넣으시면 됩니다.
* Access Token이 노출되는 건 여러모로 좋지 않으니, 난독화 사이트 등을 이용해 암호화를 한 번 하시는 걸 추천합니다. 난독화 사이트에서 String Array Encoding을 Base64로 변경하시면 스트링이 Base64로 인코딩됩니다.
심지어 https가 없는 cfile{숫자}.uf.tistory.com
란 주소를 반환해서, t1.daumcdn.net
으로 수정해주는 과정을 거쳐야 합니다.
이미지의 주소가 cfile6.uf.tistory.com/image/1328CE504DB79F5932B13F
라 가정하면 제일 마지막에 132…
부분에서 제일 마지막 4글자를 제외한 문자를 t1.daumcdn.net/cfile/tistory/
뒤에 넣어주면 https로 암호화된 주소를 사용하실 수 있습니다.
확인
성공적으로 모든 과정을 마치셨으면 파일 업로드 버튼을 클릭하셔서 사진을 올려보세요.
모든 게 정상적으로 진행됐다면 위 사진처럼 댓글 창에 이미지 주소가 추가될 겁니다.