데스트탑 앱으로 티스토리 로그인하기
글쓴이: rlj1202 / 작성시간: 수, 2017/08/30 - 11:07오후
티스토리에서 제공하는 API를 이용해서 글 목록을 가져오기 위해 Go언어로 작업을 하고 있었는데, 마지막에서 막혀서 이곳에 질문 드립니다.
일단 티스토리 로그인 홈페이지에 있는 form 에 어떤게 있는지 알아보니 다음과 같이 생겼더군요
간단하게만 나타내 보았습니다.
<form method="post" action="https://www.tistory.com/auth/login"> <input name="loginId"> <input name="password"> </form>
또한, 티스토리에서 저 형식으로 로그인 요청을 한 뒤에 쿠키에 있는 무슨 세션값이랑 비교를 해서 있으면 성공, 없으면 로그인이 만료됬다고 하면서 로그인이 되지 않아 일단 로그인 홈페이지에 접속을 요청해서 쿠키값을 만들어 놓고 로그인 요청을 보냅니다.
여기까지는 되는데 그 이후가 문제입니다. 분명히 아이디와 패스워드 값을 제대로 주었는데도 일치하지 않는다고 하는군요.
제가 의심해 보는것은 인코딩인데... url 인코딩이라는걸 한다더군요. "@"같은 기호를 %40으로 바꾸어서 보내고 등등... 그런데 이런게 Go 라이브러리에 구현되어있지 않을리가 없고 document 에서도 url-encoded 되서 보낸다 라고 쓰여있었습니다.
도움을 부탁드립니다!
cookies, err := cookiejar.New(nil) if err != nil { panic(err) } client := new(http.Client) client.Jar = cookies resp, err := client.Get(postUrl) resp, err = client.PostForm(postUrl, url.Values{ "loginId": { loginId }, "password": { password }, "rememberLoginId": { "1" }, "redirectUrl": { "http://www.tistory.com" }, }) if err != nil { panic(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { println("error") panic(err) } println(string(body))
Forums:
1. 로그인 할 때 아이디, 패스워드 외에도 추가적인
1. 로그인 할 때 아이디, 패스워드 외에도 추가적인 인증 값을 보내고 있습니다.
2. 티스토리쪽 API를 쓸려면 아이디/패스워드 로그인이 아니라 OAuth로 인증 토큰을 발급받아야 되지 않나요?
OAuth로 인증토큰을 받기 위해 url을 보내면
OAuth로 인증토큰을 받기 위해 url을 보내면 티스토리 로그인 페이지로 리다이렉트 해서 로그인을 해야합니다. 그래서 먼저 티스토리 로그인 페이지에서 로그인을 한 뒤에 로그인 세션을 유지한 채로 access_token을 요청하려고 합니다.
그런데 1번에 추가적인 인증값이 무엇인가요? 제가 본 form에는 뭐 redirect_url이나 rememberId 같은 부가적인 값밖에 찾지 못했습니다.
그러니까, 별도의 웹 서버 없이 OAuth 인증을
그러니까, 별도의 웹 서버 없이 OAuth 인증을 받으려는 건가요?
로그인시 추가적인 인증값은 첨부파일 하단에 Form Data에 있습니다.
그 값이 무엇을 의미하는지는 모르시겠죠?
그 값이 무엇을 의미하는지는 모르시겠죠?
해당 값이 자바스크립트를 통해 추가 될수도 있나요?
JavaScript로, 로그인 폼이 전송되기 직전에
JavaScript로, 로그인 폼이 전송되기 직전에 form에 input hidden 등을 추가해서 추가적인 값을 보낼 수 있습니다.
T.p.top.auth.js 파일에
라는 내용이 있네요.
아! 그렇군요
Go언어에서는 html 파일을 받아만 올 뿐 자바스크립트를 실행하지 않아서 그런 내용이 보이지 않았던것 같습니다. 해결의 실마리를 찾은것 같네요. 감사합니다!
BlogAPI 혹은 Tistory api
BlogAPI로 접근이 안되시면, TISTORY API를 이용하시는 것이 좋습니다.
http://www.tistory.com/guide/api/index
참고로 OAuth 로 연습해두시면, 카카오가 아닌 다른 서비스에서도 쉽게 비슷한 방법으로 구현가능합니다.
---
http://coolengineer.com
댓글 달기