Blogger Data API를 사용하면 클라이언트 애플리케이션이 Google Data API 피드 형식으로 Blogger 콘텐츠를 보고 업데이트할 수 있습니다.
클라이언트 애플리케이션은 Blogger Data API를 사용하여 새 블로그 게시물을 만들고, 기존 블로그 게시물을 수정 또는 삭제하고, 특정 기준과 일치하는 블로그 게시물을 쿼리할 수 있습니다.
이 문서에서는 Blogger Data API의 기능에 관한 배경 정보를 제공할 뿐만 아니라 JavaScript 클라이언트 라이브러리를 사용하는 기본 Data API 상호작용의 예를 제공합니다. 라이브러리가 사용하는 기본 프로토콜에 관해 자세히 알아보려면 이 개발자 가이드의 프로토콜 섹션을 참고하세요.
목차
잠재고객
이 문서는 Blogger와 상호작용할 수 있는 JavaScript 클라이언트 애플리케이션을 작성하려는 프로그래머를 대상으로 합니다. JavaScript 클라이언트 라이브러리를 사용한 기본 Data API 상호작용의 일련의 예를 제공합니다.
Blogger Data API 참조 정보는 프로토콜 참조 가이드를 참고하세요. 이 문서에서는 Google Data API 프로토콜의 일반적인 개념과 JavaScript 클라이언트 라이브러리에서 사용하는 데이터 모델 및 제어 흐름을 이해하고 있다고 가정합니다. 또한 JavaScript로 프로그래밍하는 방법을 알고 있다고 가정합니다.
클라이언트 라이브러리에서 제공하는 클래스 및 메서드에 관한 참조 정보는 JavaScript 클라이언트 라이브러리 API 참조를 참고하세요.
이 문서는 순서대로 읽을 수 있도록 설계되었습니다. 각 예는 이전 예를 바탕으로 빌드됩니다.
이용약관
JavaScript 클라이언트 라이브러리를 사용할 때는 Google JavaScript 클라이언트 라이브러리 사용 약관을 준수해야 합니다.
지원되는 환경 정보
현재 브라우저의 웹페이지에서 실행되는 JavaScript 클라이언트 애플리케이션만 지원됩니다. 현재 지원되는 브라우저는 Firefox 1.5 이상 및 Internet Explorer 6.0 이상입니다.
JavaScript 클라이언트 라이브러리는 서비스 서버와의 모든 통신을 처리합니다. JS 개발자 경험이 있는 경우 '하지만 동일 출처 정책은 어떻나요?'라고 생각할 수 있습니다. JavaScript 클라이언트 라이브러리를 사용하면 클라이언트가 브라우저 보안 모델을 준수하면서 모든 도메인에서 Google Data API 요청을 전송할 수 있습니다.
시작하기
JavaScript 클라이언트 애플리케이션을 작성하려면 먼저 라이브러리를 가져오기 위한 설정을 해야 합니다.
Blogger 계정 만들기
테스트 목적으로 Blogger 계정을 등록하는 것이 좋습니다. Blogger는 Google 계정을 사용하므로 이미 Google 계정이 있다면 바로 시작할 수 있습니다.
라이브러리 획득
클라이언트가 클라이언트 라이브러리를 사용하려면 먼저 서버에서 클라이언트 라이브러리 코드를 요청해야 합니다.
먼저 HTML 문서의 <head>
섹션에서 <script>
태그를 사용하여 Google AJAX API 로더를 가져옵니다.
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
로더를 가져온 후 Google Data API 클라이언트 라이브러리를 가져오려면 JavaScript 설정 코드에서 다음 줄을 사용합니다. 이 줄은 HTML 문서의 <head>
섹션 (또는 HTML 문서의 <head>
섹션에서 <script>
태그를 사용하여 포함된 JavaScript 파일)에서 호출해야 합니다.
google.load("gdata", "1.x");
google.load()
의 두 번째 매개변수는 JavaScript 클라이언트 라이브러리의 요청된 버전 번호입니다. 버전 번호 지정 체계는 Google Maps API에서 사용하는 체계를 모델로 합니다. 가능한 버전 번호와 그 의미는 다음과 같습니다.
"1"
- 주 버전 1의 두 번째 버전입니다.
"1.x"
- 메이저 버전 1의 최신 버전입니다.
"1.s"
- 주요 버전 1의 최신 안정화 버전입니다. Google은 개발자로부터 받은 의견을 바탕으로 특정 버전의 클라이언트 라이브러리를 '안정적'이라고 선언하는 경우가 있습니다. 그러나 해당 버전에 최신 지형지물이 없을 수 있습니다.
"1.0"
,"1.1
" 등- 지정된 메이저 및 마이너 버전 번호가 있는 라이브러리의 특정 버전입니다.
google.load()
를 호출한 후에는 로더에 페이지 로드가 완료될 때까지 기다렸다가 코드를 호출하도록 지시해야 합니다.
google.setOnLoadCallback(getMyBlogFeed);
여기서 getMyBlogFeed()
는 이 문서의 뒷부분에서 정의할 함수입니다. <body>
요소에 onload
핸들러를 연결하는 대신 이 접근 방식을 사용하세요.
Blogger 서비스에 인증
Blogger Data API를 사용하여 공개 및 비공개 피드에 모두 액세스할 수 있습니다. 공개 피드에는 인증이 필요하지 않지만 읽기 전용입니다. 블로그를 수정하려면 클라이언트가 비공개 피드를 요청하기 전에 인증해야 합니다.
JavaScript 클라이언트 라이브러리는 AuthSub 인증 시스템을 사용합니다. 일반적으로 Google Data API를 통한 인증에 관한 자세한 내용은 인증 문서를 참고하세요.
AuthSub 프록시 인증
AuthSub 프록시 인증은 Google 계정에 사용자를 인증해야 하는 웹 애플리케이션에서 사용됩니다. 웹사이트 운영자와 클라이언트 코드는 Blogger 사용자의 사용자 이름과 비밀번호에 액세스할 수 없습니다. 대신 클라이언트는 클라이언트가 특정 사용자를 대신하여 작업할 수 있는 특수한 AuthSub 토큰을 가져옵니다.
다음은 웹 기반 JavaScript 클라이언트의 인증 프로세스 중에 발생하는 상황을 간략하게 설명한 내용입니다.
- 클라이언트 애플리케이션은 클라이언트 라이브러리에서 제공하는
google.accounts.user.login()
메서드를 호출하여 사용할 Google 서비스를 나타내는 '범위' 값을 전달합니다. Blogger의 경우 범위는"http://www.blogger.com/feeds/"
입니다. - 클라이언트 라이브러리는 브라우저를 Google의 '액세스 요청' 페이지로 전송합니다. 이 페이지에서 사용자는 사용자 인증 정보를 입력하여 서비스에 로그인할 수 있습니다.
- 사용자가 로그인하면 AuthSub 시스템은 브라우저를 웹 클라이언트의 URL로 다시 전송하여 인증 토큰을 전달합니다.
- JavaScript 클라이언트 라이브러리는 토큰을 쿠키에 저장하고
google.accounts.user.login()
를 호출한 클라이언트 애플리케이션의 함수에 제어를 반환합니다. - 이후 클라이언트 애플리케이션이 Blogger와 상호작용하는 클라이언트 라이브러리 메서드를 호출하면 클라이언트 라이브러리는 모든 요청에 토큰을 자동으로 연결합니다.
참고: JavaScript 클라이언트 라이브러리가 웹브라우저에서 인증된 Blogger 요청을 실행하려면 페이지에 페이지와 동일한 도메인에 호스팅된 이미지가 포함되어 있어야 합니다. 단일 픽셀 투명 이미지도 포함해 어떤 이미지든지 사용할 수 있지만 페이지에 이미지가 있어야 합니다. 이미지가 페이지에 표시되지 않도록 하려면 <img>
태그의 style
속성을 사용하여 이미지를 렌더링 영역 외부에 배치하면 됩니다. 예: style="position:absolute; top:
-1000px;"
로그인을 처리하는 클라이언트 애플리케이션 코드는 다음과 같습니다. 나중에 다른 코드에서 setupMyService()
함수를 호출합니다.
function logMeIn() {
scope = "http://www.blogger.com/feeds/
";
var token = google.accounts.user.login(scope);
}
function setupMyService() {
var myService =
new google.gdata.blogger.BloggerService('exampleCo-exampleApp-1');
logMeIn();
return myService;
}
도움말: 사용자에게 로그인 프로세스를 수동으로 시작하도록 메시지를 표시하는 로그인 버튼이나 기타 사용자 입력 메커니즘을 제공하는 것이 좋습니다. 대신 로드 후 사용자 상호작용을 기다리지 않고 즉시 google.accounts.user.login()
를 호출하면 사용자가 페이지에 도착했을 때 가장 먼저 Google 로그인 페이지가 표시됩니다. 사용자가 로그인하지 않기로 결정하면 Google에서 사용자를 페이지로 다시 안내하지 않습니다. 따라서 사용자의 관점에서는 페이지를 방문하려고 했지만 페이지로 이동하지 못하고 다시 돌아가지 못했다고 생각할 수 있습니다. 이 시나리오는 사용자에게 혼란과 불편을 줄 수 있습니다. 이 문서의 예시 코드에서는 예시를 단순하게 유지하기 위해 로드 직후에 google.accounts.user.login()
를 호출하지만 실제 클라이언트 애플리케이션에는 이 접근 방식을 권장하지 않습니다.
token
라는 변수와는 아무것도 할 필요가 없습니다. 클라이언트 라이브러리가 토큰을 추적하므로 개발자가 할 필요가 없습니다.
참고: 새 BloggerService 객체를 만들면 클라이언트 라이브러리는 google.gdata.client.init()
라는 메서드를 호출하여 클라이언트가 실행 중인 브라우저가 지원되는지 확인합니다. 오류가 있으면 클라이언트 라이브러리가 사용자에게 오류 메시지를 표시합니다. 이러한 유형의 오류를 직접 처리하려면 서비스를 만들기 전에 google.gdata.client.init(handleInitError)
를 명시적으로 호출하면 됩니다. 여기서 handleInitError()
는 함수입니다. init 오류가 발생하면 함수는 표준 Error 객체를 수신합니다. 이 객체로 원하는 작업을 할 수 있습니다.
토큰은 google.accounts.user.logout()
를 호출하여 취소할 때까지 유효합니다.
function logMeOut() { google.accounts.user.logout(); }
logout()
을 호출하지 않으면 사용자가 삭제하지 않는 한 토큰을 저장하는 쿠키는 2년 동안 지속됩니다. 쿠키는 브라우저 세션 전반에서 유지되므로 사용자가 브라우저를 닫았다가 다시 열고 클라이언트로 돌아와도 계속 로그인 상태로 유지됩니다.
그러나 세션 중에 토큰이 무효화될 수 있는 특정 비정상적인 상황이 있습니다. Blogger에서 토큰을 거부하면 클라이언트는 logout()
를 호출하여 현재 토큰이 포함된 쿠키를 삭제한 후 login()
를 다시 호출하여 유효한 새 토큰을 획득하여 오류 조건을 처리해야 합니다.
다양한 컨텍스트에서 유용할 수 있는 다른 두 가지 AuthSub 메서드가 있습니다.
google.accounts.user.checkLogin(scope)
는 브라우저에 현재 지정된 범위에 대한 인증 토큰이 있는지 여부를 나타냅니다.google.accounts.user.getInfo()
는 디버깅용으로 현재 토큰에 관한 자세한 정보를 제공합니다.
토큰 관리, checkLogin()
및 getInfo()
에 관한 정보 등 JavaScript를 사용하여 AuthSub와 상호작용하는 방법에 관한 자세한 내용은 JavaScript 클라이언트 라이브러리에서 'AuthSub' 인증 사용 문서를 참고하세요.