Criar apps com o AngularJS

Este guia ajuda você a começar a criar aplicativos do Google Chrome com o framework MVC AngularJS. Para ilustrar o Angular em ação, vamos nos referir a um app criado com o framework, o Ferramenta de upload do Google Drive. O código-fonte (link em inglês) está disponível no GitHub.

Sobre o app

Aplicativo de upload do Google Drive

Com o app de upload do Google Drive, os usuários podem ver e interagir rapidamente com os arquivos armazenados na conta do Google Drive, além de fazer upload de novos arquivos usando as APIs HTML Drag and Drop. Esse é um excelente exemplo de como criar um app que se comunica com uma das APIs do Google. Neste caso, a API Google Drive.

O usuário que fez o upload usa o OAuth2 para acessar os dados do usuário. A API chrome.identity processa a busca de um token OAuth para o usuário conectado. Assim, o trabalho é feito por nós. Quando temos um token de acesso de longa duração, os aplicativos usam a API Google Drive para acessar os dados do usuário.

Principais recursos usados pelo app:

  • Detecção automática do AngularJS para CSP
  • Renderizar uma lista de arquivos buscados na API Google Drive.
  • API HTML5 Filesystem para armazenar ícones de arquivos off-line
  • HTML5 arraste e solte para importar/fazer upload de novos arquivos do computador
  • XHR2 para carregar imagens, entre domínios
  • API chrome.identity para autorização OAuth
  • Frames sem cromo para definir a aparência da barra de navegação do app

Criar o manifesto

Todos os apps do Chrome exigem um arquivo manifest.json que contém as informações que o Chrome precisa para iniciar o app. O manifesto contém metadados relevantes e lista todas as permissões especiais que o app precisa executar.

Uma versão reduzida do manifesto do usuário que fez o envio é parecida com esta:

{
  "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/"
  ]
}

As partes mais importantes desse manifesto são as seções "oauth2" e "permissions".

A seção "oauth2" define os parâmetros exigidos pelo OAuth2 para fazer sua mágica. Para criar um "client_id", siga as instruções em Acessar o ID do cliente. A seção "Escopos" lista os escopos de autorização para os quais o token OAuth será válido (por exemplo, as APIs que o app quer acessar).

A seção “permissions” inclui URLs que o aplicativo acessará via XHR2. Os prefixos de URL são necessários para que o Chrome saiba quais solicitações entre domínios são permitidas.

Criar a página do evento

Todos os apps do Chrome exigem um script/página em segundo plano para iniciar o app e responder a eventos do sistema.

No script background.js, a ferramenta de upload do Drive abre uma janela de 500 x 600 pixels na página principal. Ele também especifica uma altura e largura mínimas para a janela, para que o conteúdo não fique muito processado:

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'
  });
});

A janela é criada como uma janela sem cromo (frame: 'none'). Por padrão, o Windows é renderizado com a barra padrão de fechar/expandir/minimizar do SO:

Aplicativo de upload do Google Drive sem frame

O app de upload usa frame: 'none' para renderizar a janela como uma "folha em branco" e cria um botão "Fechar" personalizado em main.html:

Ferramenta de upload do Google Drive com frame personalizado

Toda a área de navegação é envolvida em uma