네이버는 글쓰기 api를 제공하지만, 그건 외부툴만을 이용하는 것일뿐 그걸 수정해서 웹상에서 스케줄로 돌린다든지, 하는 방법은 지원되지 않는다.
그래도 관련해서 찾아보던중...글쓰기 api의 구동원리를 보니 metaWeblog 의 api를 사용하는 것으로 확인이 되었다. 관련 레퍼런스를 찾아보니! 역시! 있군하...ㅎㅎ
대부분 php버전으로 돌아다니는데 울 회사는 asp를 사용하니 asp 버전으로 사용해서 적용해봤다.
누가 만들어놓은것을 수정한것임.. 원본 : http://jungcw.tistory.com/250
아래 소스를 확인.
<!--#include file="xmlrpc.asp" -->
<%
'아래 함수가 포스팅관련 글 입력하는 함수임_____윗부분은 include로 넣어줄 xmlrpc 모듈임
on error resume next
'포스팅을 처리할 방식을 지정
Dim postmode : postmode = trim(request("postmode"))
If postmode = "" Then postmode = "newPost"
' 포스트쓰기
' metaWeblog.newPost (blogid, username, password, struct, publish) returns string
' 포스트수정
' metaWeblog.editPost (postid, username, password, struct, publish) returns true
' 포스트가져오기
' metaWeblog.getPost (postid, username, password) returns struct
'
' metaWeblog.newMediaObject (blogid, username, password, struct) returns struct
' 카테고리목록
' metaWeblog.getCategories (blogid, username, password) returns struct
' 최근포스트
' metaWeblog.getRecentPosts (blogid, username, password, numberOfPosts) returns array of structs
Dim err_number : err_number = 0
'블로그에 접속할 아이디
Dim username : username = "네이버아이디"
'블로그 인증키(네이버>관리>글쓰기api설정>api연결정보 : api 연결암호값)
Dim apikey : apikey = "네이버키"
'데이터통신을 진행할 url(네이버>관리>글쓰기api설정>api연결정보 : api연결URL)
Dim api_url : api_url = "https://api.blog.naver.com/xmlrpc"
select Case postmode
Case "newPost"
Response.write("<pre>" & Replace(Fn_BlogPost_newPost(categories,title,description,username,apikey,api_url), "<", "<", 1, -1, 1) & "</pre>")
Case "editPost"
Response.write("<pre>" & Replace(Fn_BlogPost_editPost(categories,title,description,username,apikey,api_url), "<", "<", 1, -1, 1) & "</pre>")
Case "getPost"
Response.write("<pre>" & Replace(Fn_BlogPost_getPost(categories,title,description,username,apikey,api_url), "<", "<", 1, -1, 1) & "</pre>")
Case "newMediaObject"
Response.write("<pre>" & Replace(Fn_BlogPost_newMediaObject(categories,title,description,username,apikey,api_url), "<", "<", 1, -1, 1) & "</pre>")
Case "getCategories"
Response.write("<pre>" & Replace(Fn_BlogPost_getCategories(username,apikey,api_url), "<", "<", 1, -1, 1) & "</pre>")
Case "getRecentPosts"
Response.write("<pre>" & Replace(Fn_BlogPost_getRecentPosts(username,apikey,api_url,5), "<", "<", 1, -1, 1) & "</pre>")
End Select
'포스트등록함수
Function Fn_BlogPost_newPost(categories,title,description,username,apikey,api_url)
' categories : 포스트등록할 카테고리선택 (ex : 영화, 스포츠...)
' title : 포스트제목
' description : 포스트내용
'메타블로그의 포스팅 관련 메소드임을 선언
Dim methodName : methodName = "metaWeblog.newPost"
'통신을 통해 던져줄 값을 배열로 저장해서 던져줌.
Dim paramList(4)
paramList(0) = "" '사용 않함
paramList(1) = username '로그인 아이디
paramList(2) = apikey 'apikey
set dict = Server.createObject("Scripting.Dictionary")
dict.add "categories", categories '카테고리
dict.add "description", description '내용
dict.add "title", title '제목
set paramList(3) = dict
set dict = nothing
paramList(4) = true '글 공개|비공개
Dim myresp : myresp = xmlRPC ( api_url, methodName, paramList)
err_number = err.number
if err.number <>0 then
' response.write("Error number: " & err.number & "<P>")
' response.write("Error description: " & err.description & "<P>") Response.end
else
response.write("등록된 글 번호 : " & myresp)
end If
Fn_BlogPost = serverResponseText
End Function
'카테고리목록 가져오기 함수
Function Fn_BlogPost_getCategories(username,apikey,api_url)
'메타블로그의 포스팅 관련 메소드임을 선언
Dim methodName : methodName = "metaWeblog.getCategories"
'통신을 통해 던져줄 값을 배열로 저장해서 던져줌.
Dim paramList(4)
paramList(0) = "" '사용 않함
paramList(1) = CStr(username) '로그인 아이디
paramList(2) = CStr(apikey) 'apikey
Dim myresp : myresp = xmlRPC ( api_url, methodName, paramList)
err_number = err.number
if err.number <>0 then
' response.write("Error number: " & err.number & "<P>")
' response.write("Error description: " & err.description & "<P>")
Response.end
end If
Fn_BlogPost_getCategories = serverResponseText
End Function
'최근포스트 가져오기 함수
Function Fn_BlogPost_getRecentPosts(username,apikey,api_url,cnt)
'메타블로그의 포스팅 관련 메소드임을 선언
Dim methodName : methodName = "metaWeblog.getRecentPosts"
'통신을 통해 던져줄 값을 배열로 저장해서 던져줌.
Dim paramList(4)
paramList(0) = "" '사용 않함
paramList(1) = CStr(username) '로그인 아이디
paramList(2) = CStr(apikey) 'apikey
paramList(3) = cnt '최근출력할갯수
Dim myresp : myresp = xmlRPC ( api_url, methodName, paramList)
err_number = err.number
if err.number <>0 then
' response.write("Error number: " & CStr(err.number) & "<P>")
' response.write("Error description: " & err.description & "<P>")
Response.end
end If
Fn_BlogPost_getRecentPosts = serverResponseText
End Function
%>
위 소스에서는 등록, 최근포스트, 카테고리 이렇게 3가지만 구현해놓았는데,
필요한 모드는 위와같은 방식으로 구현하면 된다.
단..오토포스팅은..편리하긴 하지만, 포스팅의 질을 떨어뜨릴 수 있으니..너무 남용을 하지는 말자!!!
'WEB개발' 카테고리의 다른 글
아약스(json)으로 셀렉트박스 만들기코드 (0) | 2013.01.28 |
---|---|
현재 레코드 집합이 책갈피를 지원하지 않습니다. 이것은 공급자의 제한 또는 선택한 커서 형식일 수 있습니다. 라고?! (0) | 2012.11.12 |
개인정보보호법 시행! 언제부터? (0) | 2012.07.19 |
textarea 에서 엔터키를 적용시키는 방법?...json에선?? (0) | 2012.07.04 |
ASP에서 프로시저 실행시! Command.Parameters.Refresh !!! (0) | 2012.06.28 |