네이버 블로그 글쓰기 API 활용 Guide (metaWeblog API)

본 글은  http://dev.naver.com/projects/naverblogpostap/download 첨부되어 있는 문서를 발췌했습니다.

물론 위의 주소로 가시면 다운로드도 가능합니다.

이런 곳이 있었는지도 몰랐네요! ㅡㅡ;

metaWeblog API를 이용한 원격블로깅에 관련된 자료가 워낙에 많이 있긴하지만 어떻게 해야할지 모르시는 분들은 꼭 읽어보시기 바랍니다. 특히나 이미지를 첨부하여 원격블로깅을 하시는데 애로사항이 많으신 분들은 조금이나마 도움이 되시리라 믿습니다. ^^;
저도 모바일에 원격블로깅을 넣으려고 시험삼아 제 계정에 임시로 만들어봤습니다.
아래 링크참고하시면 됩니다.

네이버 블로그 글쓰기 API 활용 Guide


1.  
블로그 글쓰기 API 정의

블로그 글쓰기 API는 다양한 외부 툴에서 블로그 글쓰기, 편집, 읽기 등과 관련된 기능을 지원하는 인터페이스 입니다. 즉 이 API를 사용하면 자신의 블로그에 접속하지 않아도, 다른 서비스나
클라이언트를 통해서도 블로그 글을 조회하고, 쓰고, 수정
변경하는 원격 블로깅이 가능해 집니다

블로깅 API는 일반적으로 HTTP를 기반으로
하는 XML-RPC, SOAP, REST 프로토콜 중 하나 이상을 지원하며, 배포 방식으로는 RSS Feed, Atom Feed 양식을 지원
합니다.

현재 널리 쓰이고 있는 범용 블로그 글쓰기 API로는
Blogger API, MetaWeblog API, Movable Type API, Atom API
등이 있습니다.

 

2.   네이버 블로그 글쓰기 API의 특징

(1)    지원 API

네이버 블로그는 범용 블로그 글쓰기 API Blogger API, MetaWeblog API의 기준을 준수해 지원하고 있습니다. 따라서 해당 API에서 제공되는 글쓰기 관련 기능(글쓰기, 조회, 수정 및
삭제, 카테고리 변경 등)이 지원 됩니다.

 

(2)    유저의 이용 방식

1) [네이버] 로그인 à블로그 à블로그관리 à환경설정 à기본 설정 à글쓰기 API 설정
에서 API 연결암호를 발급 받고 글을 받을 카테고리 및 공개설정을 합니다.

2) [글쓰기 툴] 블로그로 보내기 설정관련 기능에서
네이버 블로그에서 발급 받은 API 연결암호를 각 글쓰기 툴에 등록 후 원격 블로깅 합니다.

è설정과정자세히보기

 

(3)    네이버 글쓰기 API가 지원되는 서비스 및 프로그램

1) MS워드 2007

2) Windows Live Writer

3) 미투데이

4) Google Docs

5) 스프링노트

6) Flickr

7) 한글 신규 버전 (예정)

8) 기타 나모 웹에디터,
Firefox (Scribefire),
맥킨토시 Ecto

 

(4)  보안 적용

1)   API 연결 암호
글쓰기 API를 통한 원격 블로깅에는 네이버 블로그 비밀번호와 다른 별도의 API 연결 암호를 생성하도록 되어 있습니다. 이 연결 암호는 SSL 보안이 적용된 상태에서 발급 적용이 되며, 암호 발급 페이지에도 IP보안(로그인 후 IP주소가
최근 로그인 IP주소들과 동일한 경우만 허용, IP 주소
변경 시 최소화 된 사용자 재확인을 요청함)이 적용됩니다. ,

 

2)   API를 통한 통신단계
글쓰기 API를 통한 조회, 쓰기, 수정 및 변경 시 보안이 필요한 정보에 대해서
SSL
보안을 적용하여 통신되어 집니다.

 

(5)  정책적 및 기술적 특수 제한 사항

1)   글쓰기 API를 통해 1
등록 가능한 포스트 수는 최대 200 입니다.

 

2)   글쓰기 API를 통한 블로그의 포스트 조회 및 수정은 최신 등록 순으로

최대 50까지 가능합니다.

 

3)   글쓰기 API를 통해 작성된 게시물은 사이트(http://blog.naver.com)에서 작성된 게시물과 동일한 서비스 운영원칙이 적용되며, 해당 운영원칙에 위배되는 경우 이용에 제한이 있을 수 있습니다.

 

4)   기타 지원 글쓰기 API 툴의 지원 기능 및 스팩에 따라, 글쓰기 API를 작성한 외부 툴에서 작성한 형태와 실제 네이버
블로그에 적용된 형태가 다르게 나타날 수 있습니다
. ( : 지원
폰트, 플러그인)

 

5)   글쓰기 API를 통해 비공개 카테고리에 포스트를 등록할 경우, 포스트
공개 설정을 지원하지 않습니다
.
네이버 블로그는 이용자에게 관리 > 환경설정
>
글쓰기 API 설정에서 글쓰기 API
통해 등록될 카테고리와 공개설정을 하도록 하고 있습니다. 따라서 이 글쓰기 API 설명에서 정한 카테고리와 공개설정에 따라 자동으로 포스트가 등록됩니다.
그러나 글쓰기 툴에서 기본 설정한 카테고리 외의 다른 카테고리로 포스트를 등록할 수 있기도 하는데
(
기본 MetaWeblog API 스팩), 만약
변경 등록할 카테고리가 관리 메뉴에서 비공개설정해둔 카테고리일
경우, 글쓰기 툴에서 포스트를 공개설정으로 임의 전환해 등록할 수 없습니다. (네이버 블로그 관리 메뉴에서 블로그 유저가 메뉴 공개 설정을 변경해야 합니다.)

 

6)   글쓰기 API를 통한 태그 지원블로그 태그 영역이 아닌 포스트 영역에 지원합니다.
태그 등록을 지원하고는 있으나, 등록
시 블로그 태그 영역이 아닌 포스트 영역 끝에 등록되어 집니다. ※글쓰기 API를 통해 등록된 태그를 블로그 태그영역에 연동하도록 현재 검토 중입니다.


(
그림 – Windows Live
Writer
의 태그 삽입 시 포스트 하단에 연결된 태그 화면)


3.   블로그 글쓰기 API 관련 Reference
네이버 블로그
글쓰기 API는 범용 글쓰기 API Blogger API, MetaWeblogAPI 기준을 준수하고 있습니다. 아래의
내용은 이러한 범용 글쓰기 API의 기술 스팩에 대해 기술하고 있는
사이트 입니다. 개발에 참고해 주시기 바랍니다.

 

 (네이버 블로그 글쓰기
지원하는 Blogger API, MetaWeblog API 관련)

Ÿ  XML-RPC http://www.xmlrpc.com/spec

Ÿ  MetaWebLog API http://www.xmlrpc.com/metaWeblogApi

Ÿ  Blogger API http://www.blogger.com/developers/api/1_docs/

 

 (기타 블로그 글쓰기 API 관련)

Ÿ  ATOM API http://tools.ietf.org/html/rfc4287

Ÿ  RSS2.0 http://blogs.law.harvard.edu/tech/rss

Ÿ  Gdata API http://code.google.com/apis/gdata/

 

4.   책임과 한계

(1)   네이버 블로그 글쓰기 API 서비스 이용은 NHN(이하 회사)의 업무상 또는 기술상 특별한 지장이 없는 한 연중무휴, 1 24시간 운영을 원칙으로 합니다. , 회사는 시스템 정기점검, 증서
및 교체를 위해 회사가 정한 날이나 시간에 ‘API’서비스를 일시 중단 할 수 있으며, 예정되어 있는 작업으로 인한 서비스 일시 중단은
서비스
공지사항
을 통해 사전 공지합니다.

 

(2)   네이버 블로그 글쓰기 API를 활용하는 회사 및 개인(이하 회원)은 블로그 글쓰기 API
다음의 경우로 활용해서는 안되며, 해당 행위를 하는 경우 회사는 회원의 서비스 이용제한, 이용중단 및 적법 조치를 포함한 필요조치를 취할 수 있습니다.

 

l  타인의 ID, 인증키, 비밀번호, 주민등록번호 등을 도용하는 행위

l  회원 ID, 인증키, 비밀번호 등을 타인과 거래하는
행위

l  회사의 운영진, 직원 또는 관계자를 사칭하는 행위

l  회사로부터 특별한 권리를 부여 받지 않고 회사의 소프트웨어를 변경하거나, 회사의 서버를 해킹하거나, 웹사이트 또는 게시된 정보의 일부분 또는 전체를 임의로 변경하는 행위

l  API 서비스에 위해를 가하거나 고의로 방해하는 행위

l  API 서비스를 사용하는 웹사이트 도메인을 활용하여 공공질서 및 미풍양속에
위반되는
저속, 음란한 내용의 정보, 문장, 도형, 음향, 동영상을
전송, 게시, 전자우편 또는 기타 방법으로 타인에게 유포하는
행위

l  회사의 승인을 받지 않고 다른 회원의 개인정보를 수집 또는 저장하는 행위

l  API 서비스를 사용하는 웹사이트 도메인이 범죄와 결부된다고 객관적으로
판단되는 행위기타 회사가 정한 제반 규정 또는 

이용 조건을 위반하거나 관계법령에 위배되는 행위

 

5.   네이버 블로그 글쓰기 API 관련 컨택 포인트
서비스 운영 담당 : 네이버 블로그 서비스팀 신상희 차장 (sangiii@nhn.com)

서비스 개발 담당 :
네이버 블로그 서비스개발팀 박태진 과장 (
bigtrue@nhn.com)

 

6.   별첨
(1) FAQ
(2)
샘플코드 따라하기(MetaWeblog API)

 



FAQ

1.  API키를 발급받아서 사용해야 하나요?

블로그는 웹 브라우저를 이용하지 않는 외부 툴을 이용하여 네이버 블로그에 글쓰기를 지원하는 만큼 보안이 중요합니다. 그런 이유로 네이버 로그인을 위한 패스워드를 사용하지 않고, 따로
글쓰기 API를 위한 키를 발급하고 있으며 이를 이용한 글쓰기만을 허용하고 있습니다. 또한 프로토콜도 같은 이유로 인해 일반적인 HTTP가 아닌 보안이
강화된 HTTPS를 사용하고 있습니다.

 

추가적으로 MetaWeblog API의 경우는 신뢰할 수 있는 외부 업체에 한해 OAuth 인증도 지원하고 있습니다.

OAuth 인증에 관한 기본적인 사항은 http://oauth.net 을 참고하시기 바라며, OAuth와 관련한 키 발급에 관한 부분은 네이버 회원인증팀에 문의하시기 바랍니다.

2.  포스트
공개 설정을 공개로 하였는데 적용되지 않습니다.

글쓰기 API를 이용하여 포스팅 할 때 설정하는 포스트의 공개 설정은 다음의 조건에
해당할 경우 무시될 수 있습니다. (아래 설정이 우선 적용 됩니다.)

네이버 블로그
관리 > 기본설정 > 글쓰기 API 설정 > 포스트 등록환경 설정
에서


작성한 글이 위치하는 카테고리의 공개 설정이 비공개일 경우.


공개 설정이 서로이웃공개, 이웃공개, 비공개일 경우.

3.  Parameter Publish(Boolean 타입) 1을 넣었는데도 인식을 못하는 것 같습니다.

http://www.xmlrpc.com/spec
에 따르면 초기에는 Boolean 타입에 1/0
넣어도 true/false로 인식하도록 되어 있었으나, updated 1/21/99 DW 부터 Boolean 타입의 경우 혼동을 방지하기 위하여 1/0 의 값이 아닌 true/ false 값으로 명시하여 사용하도록 가이드하고 있습니다.

다음은 해당 스펙에서 설명하고 있는 내용입니다.

 

Is “boolean” a distinct data type, or can
boolean values be interchanged with integers (e.g. zero=false, non-zero=true)?

Yes, boolean is a distinct data type. Some languages/environments allow for an easy coercion from zero to
false and one to true, but if you mean true, send a boolean type with the value
true, so your intent can’t possibly be misunderstood.

4.  에러가
났을 때 반환되는 메시지를 읽을 수 없습니다.

faultString 같은 경우 한글이 포함되며,
한글의 경우 HTML entity 형식으로 변환하여 전송하고 있습니다.

이 경우 해당 XML을 로컬에 저장하신 후 브라우저를 이용하여 해당 파일을 여시면
한글 메시지를 확인하실 수 있습니다.

5.  XML-RPC 스펙에서 value Element를 보면 값에 대해서
앞뒤로 type을 명시하도록 되어 있습니다. 그런데 네이버
블로그 MetaWeblog API를 이용했을 때 반환 값을 보면 유독
String
타입에 대해서만 <String></String>으로
표현하지 않습니다. 오류 아닌가요?

http://www.xmlrpc.com/spec
에 따르면 모든 값에 대하여 type을 명시하도록 되어 있습니다. 그런데 String 타입에 대해서만 예외를 두고 있는데요. 바로 타입에 대한 명시가 없으면 String 타입으로 간주한다는
것입니다.

다음은 해당 스펙에서 설명하고 있는 내용입니다.

 

Scalar <value>s

<value>s can be scalars, type is indicated by
nesting the value inside one of the tags listed in this table:

Tag

Type

Example

<i4> or
<int>

four-byte signed
integer

-12

<boolean>

0 (false) or 1 (true)

1

<string>

string

hello world

<double>

double-precision
signed floating point number

-12.214

<dateTime.iso8601>

date/time

19980717T14:08:55

<base64>

base64-encoded binary

eW91IGNhbid0IHJlYWQgdGhpcyE=

If no type is indicated, the type is string.

6.  MetaWeblog API를 사용할 때 blogId username이 있는데 용도가 궁금합니다.

MetaWeblog API를 이용하여 새로운 포스팅을 할 때 blogId username을 넣도록 되어 있습니다. 네이버 블로그에서는 blogId
username
양쪽에 똑같이 네이버 로그인 아이디(블로그 아이디)를 넣어주시면 됩니다.

7.  네이버
블로그 글쓰기 API를 이용한 매쉬업 어플리케이션을 작성하려 합니다.
글쓰기 API와 관련한 라이브러리가 따로 있나요?

글쓰기 API는 공개된 스펙(open
standard)
을 이용하고 있으며, 스펙에서는 기능만 명시하고, 구현에 대해서는 스펙을 사용하려는 측에서 구현하도록 되어 있습니다.

이런 공개된 스펙은 구현 측면에서 봤을 때 글을 받아서 저장하고 편집하는 서버 쪽과 글을 전송하는 클라이언트 쪽으로 나눌 수
있는데 네이버 블로그는 글을 받아서 저장하고 편집하는 등의 기능을 하는 서버 쪽의 구현만 적용되어 있습니다.

클라언트에서 사용할 수 있는 모듈은 직접 개발하거나 같은 목적으로 개발된 공개 라이브러리를 사용해야 하며 네이버 블로그에서는
클라이언트 모듈을 제공하지 않습니다.

8.  HTML 태그를 직접 입력했는데 태그가 적용되지 않고 노출 됩니다.

네이버 블로그에서는 허용하지 않는 태그가 있습니다. 해당 태그는 escape 처리되어 저장되므로, 태그가 노출되게 됩니다.

특히, 본문을 꾸미기 위해 스타일 사용해야 할 경우는 HTML 태그보다는 inline-style을 사용하셔야 합니다.

허용하지 않는 태그 목록

html, title, meta, link, style, script, body, form,
iframe, applet, input, textarea

9.  PHP xmlrpc.inc를 이용하여 구현했는데 CURL 오류가 납니다.

네이버 글쓰기 API HTTP가 아닌
HTTPS를 사용하고 있습니다. 그러므로 xmlrpc.inc가 아닌 liburl을 사용하시길 권장 드립니다.


샘플 코드 따라하기(MetaWeblog
API)

블로그 글쓰기 API는 직접 구현하는 방식과 공개 라이브러리를 사용하는 방법, 두 가지가 있습니다.

공개된 라이브러리의 경우 라이브러리 작성자가 제공하는 문서를 참고하면 되므로 설명을 생략하고,
여기서는 직접 xml-rpc를 구현하여 사용하는 경우를 가정하여 설명합니다.

Xml-rpc 프로토콜을 사용하는 것도 대부분 라이브러리를 사용하게 되므로 프로토콜의 payload에 올라가는 xml 위주로 간략히 설명합니다.

1.  네이버 블로그에 이미지 첨부

2.  네이버 블로그에 새로운 포스트 등록

 

Published by

안반장

Web과 App 개발을 하고 있으며 최근 워드프레스에 관심이 많아져 네이버 카페 워드프레스 홈페이지의 TF팀으로 활동 중 입니다.개인적으로는 안반장의 개발 노트라는 블로그를 운영하면서 개발의 즐거움과 고충들을 차곡차곡 담아가고 있습니다.