Crea app con AngularJS

Questa guida ti insegna a iniziare a creare app di Chrome con il framework MVC AngularJS. Per illustrare Angular in azione, faremo riferimento a un'app effettiva creata utilizzando il framework, l'Uploader di Google Drive. Il codice sorgente è disponibile su GitHub.

Informazioni sull'app

Caricamento di Google Drive

L'Uploader di Google Drive consente agli utenti di visualizzare e interagire rapidamente con i file archiviati nel loro account Google Drive, nonché di caricare nuovi file utilizzando le API di trascinamento dell'HTML. È un ottimo esempio di creazione di un'app che comunica con una delle API di Google, in questo caso l'API Google Drive.

L'utente che carica il video utilizza OAuth2 per accedere ai dati dell'utente. L'API chrome.identity gestisce il recupero di un token OAuth per l'utente che ha eseguito l'accesso, quindi il lavoro più impegnativo spetta a noi. Una volta che disponiamo di un token di accesso di lunga durata, le app utilizzano l'API Google Drive per accedere ai dati dell'utente.

Funzionalità principali utilizzate da questa app:

  • Rilevamento automatico di AngularJS per CSP
  • Visualizza un elenco di file recuperati dall'API Google Drive
  • API HTML5 Filesystem per memorizzare le icone dei file offline
  • Trascinamento HTML5 per importare/caricare nuovi file dal desktop
  • XHR2 per caricare immagini, interdominio
  • API chrome.identity per l'autorizzazione OAuth
  • Frame chromeless per definire l'aspetto e il design della barra di navigazione

Creazione del manifest

Tutte le app di Chrome richiedono un file manifest.json che contenga le informazioni necessarie a Chrome per avviare l'app. Il file manifest contiene metadati pertinenti ed elenca eventuali autorizzazioni speciali che l'app deve eseguire.

Una versione ridotta del file manifest dell'utente che carica il video ha il seguente aspetto:

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

Le parti più importanti di questo manifest sono le sezioni "oauth2" e "permissions".

La sezione "oauth2" definisce i parametri richiesti da OAuth2 per fare la sua magia. Per creare un "client_id", segui le istruzioni in Ottenere il tuo ID client. Gli "ambiti" elencano gli ambiti di autorizzazione per i quali sarà valido il token OAuth (ad esempio, le API a cui l'app vuole accedere).

La sezione "autorizzazioni" include gli URL a cui l'app accederà tramite XHR2. I prefissi URL sono necessari per consentire a Chrome di sapere quali richieste interdominio consentire.

Creazione della pagina dell'evento

Tutte le app di Chrome richiedono uno script/una pagina in background per avviarle e rispondere agli eventi di sistema.

Nel suo script background.js, il programma di caricamento di Drive apre una finestra di 500 x 600 px nella pagina principale. Specifica inoltre un'altezza e una larghezza minime per la finestra, in modo che i contenuti non risultino eccessivamente elaborati:

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

La finestra viene creata come finestra chromeless (frame: "none"). Per impostazione predefinita, il rendering delle finestre con la barra predefinita del sistema operativo di chiusura/espansione/riduci a icona:

Google Drive Uploader senza frame

L'utente che carica il video utilizza frame: 'none' per eseguire il rendering della finestra come "slate vuoto" e crea un pulsante di chiusura personalizzato in main.html:

Google Drive Uploader con frame personalizzato

L'intera area di navigazione è a capo