AngularJS로 앱 빌드

이 가이드에서는 AngularJS MVC 프레임워크를 사용하여 Chrome 앱을 빌드하는 방법을 설명합니다. Angular의 작동 방식을 설명하기 위해 Google Drive 업로더 프레임워크를 사용하여 빌드된 실제 앱을 참조하겠습니다. 소스 코드는 GitHub에서 확인할 수 있습니다.

앱 정보

Google Drive 업로더

Google Drive 업로더를 사용하면 Google Drive 계정에 저장된 파일을 빠르게 보고 상호작용할 수 있을 뿐만 아니라 HTML 드래그 앤 드롭 API를 사용하여 새 파일을 업로드할 수 있습니다. 이는 Google API 중 하나(여기서는 Google Drive API)와 통신하는 앱을 빌드하는 좋은 예입니다.

업로더는 OAuth2를 사용하여 사용자 데이터에 액세스합니다. chrome.identity API는 로그인한 사용자의 OAuth 토큰 가져오기를 처리하므로 Google은 이 작업을 자동으로 처리합니다. 수명이 긴 액세스 토큰이 있으면 앱에서 Google Drive API를 사용하여 사용자의 데이터에 액세스합니다.

이 앱에서 사용하는 주요 기능:

  • AngularJS의 CSP 자동 감지
  • Google Drive API에서 가져온 파일 목록 렌더링
  • 파일 아이콘을 오프라인으로 저장하는 HTML5 Filesystem API
  • HTML5 드래그 앤 드롭: 데스크톱에서 새 파일을 가져오거나 업로드합니다.
  • 이미지 로드를 위한 XHR2, 교차 도메인
  • OAuth 승인을 위한 chrome.identity API
  • 앱의 자체 탐색 메뉴 디자인을 정의하는 Chromeless 프레임

매니페스트 생성

모든 Chrome 앱에는 Chrome에서 앱을 실행하는 데 필요한 정보가 포함된 manifest.json 파일이 필요합니다. 매니페스트는 관련 메타데이터를 포함하며 앱을 실행하는 데 필요한 특수 권한을 나열합니다.

업로더의 매니페스트를 제거한 버전은 다음과 같습니다.

{
  "name": "Google Drive Uploader",
  "version": "0.0.1",
  "manifest_version": 2,
  "oauth2": {
    "client_id": "665859454684.apps.googleusercontent.com",
    "scopes": [
      "https://www.googleapis.com/auth/drive"
    ]
  },
 ...
  "permissions": [
    "https://docs.google.com/feeds/",
    "https://docs.googleusercontent.com/",
    "https://spreadsheets.google.com/feeds/",
    "https://ssl.gstatic.com/",
    "https://www.googleapis.com/"
  ]
}

이 매니페스트의 가장 중요한 부분은 'oauth2' 및 'permissions' 섹션입니다.

'oauth2' 섹션에서는 OAuth2가 기능을 수행하는 데 필요한 매개변수를 정의합니다. 'client_id'를 만들려면 클라이언트 ID 가져오기의 안내를 따릅니다. '범위'에는 OAuth 토큰이 유효한 승인 범위 (예: 앱에서 액세스하려는 API)가 나열됩니다.

"permissions" 섹션에는 앱이 XHR2를 통해 액세스하는 URL이 포함됩니다. URL 프리픽스는 Chrome에서 허용할 교차 도메인 요청을 파악하기 위해 필요합니다.

이벤트 페이지 만들기

모든 Chrome 앱은 앱을 실행하고 시스템 이벤트에 응답하기 위해 백그라운드 스크립트/페이지가 필요합니다.

background.js 스크립트에서 Drive 업로더는 기본 페이지로 연결되는 500x600픽셀 창을 엽니다. 또한 콘텐츠가 너무 크런치되지 않도록 창의 최소 높이와 너비를 지정합니다.

chrome.app.runtime.onLaunched.addListener(function(launchData) {
  chrome.app.window.create('../main.html', {
    id: "GDriveExample",
    bounds: {
      width: 500,
      height: 600
    },
    minWidth: 500,
    minHeight: 600,
    frame: 'none'
  });
});

창이 Chromeless 창 (프레임: '없음')으로 생성됩니다. 기본적으로 창은 OS의 기본 닫기/펼치기/최소화 막대로 렌더링됩니다.

프레임이 없는 Google Drive 업로더

업로더는 frame: 'none'를 사용하여 창을 '빈 슬레이트'로 렌더링하고 main.html에 맞춤 닫기 버튼을 만듭니다.

맞춤 프레임이 있는 Google Drive 업로더

전체 탐색 영역이 하나의