Guida rapida di Node.js

Completa i passaggi descritti nel resto di questa pagina e in circa cinque minuti avrai una semplice applicazione a riga di comando Node.js che invia richieste all'API di dati di YouTube.

Il codice campione utilizzato in questa guida recupera la risorsa channel per il canale YouTube GoogleDevelopers e stampa alcune informazioni di base della risorsa.

Prerequisiti

Per eseguire questa guida rapida, devi disporre di:

  • Node.js installato.
  • Lo strumento di gestione dei pacchetti npm (disponibile con Node.js).
  • Accesso a Internet e a un browser web.
  • Un Account Google.

Passaggio 1: attiva l'API YouTube Data

  1. Utilizza questa procedura guidata per creare o selezionare un progetto in Google Developers Console e attivare automaticamente l'API. Fai clic su Continua e poi su Vai alle credenziali.

  2. Nella pagina Crea credenziali, fai clic sul pulsante Annulla.

  3. Nella parte superiore della pagina, seleziona la scheda Schermata consenso OAuth. Seleziona un Indirizzo email, inserisci un Nome prodotto se non è già impostato e fai clic sul pulsante Salva.

  4. Seleziona la scheda Credenziali, fai clic sul pulsante Crea credenziali e seleziona ID client OAuth.

  5. Seleziona il tipo di applicazione Altro, inserisci il nome "Guida rapida all'API di dati di YouTube" e fai clic sul pulsante Crea.

  6. Fai clic su OK per ignorare la finestra di dialogo visualizzata.

  7. Fai clic sul pulsante (Scarica JSON) a destra dell'ID client.

  8. Sposta il file scaricato nella directory di lavoro e rinominalo client_secret.json.

Passaggio 2: installa la libreria client

Esegui questi comandi per installare le librerie utilizzando npm:

npm install googleapis --save
npm install google-auth-library --save

Passaggio 3: configura l'esempio

Crea un file denominato quickstart.js nella directory di lavoro e copialo nel seguente codice:

var fs = require('fs');
var readline = require('readline');
var {google} = require('googleapis');
var OAuth2 = google.auth.OAuth2;

// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/youtube-nodejs-quickstart.json
var SCOPES = ['https://www.googleapis.com/auth/youtube.readonly'];
var TOKEN_DIR = (process.env.HOME || process.env.HOMEPATH ||
    process.env.USERPROFILE) + '/.credentials/';
var TOKEN_PATH = TOKEN_DIR + 'youtube-nodejs-quickstart.json';

// Load client secrets from a local file.
fs.readFile('client_secret.json', function processClientSecrets(err, content) {
  if (err) {
    console.log('Error loading client secret file: ' + err);
    return;
  }
  // Authorize a client with the loaded credentials, then call the YouTube API.
  authorize(JSON.parse(content), getChannel);
});

/**
 * Create an OAuth2 client with the given credentials, and then execute the
 * given callback function.
 *
 * @param {Object} credentials The authorization client credentials.
 * @param {function} callback The callback to call with the authorized client.
 */
function authorize(credentials, callback) {
  var clientSecret = credentials.installed.client_secret;
  var clientId = credentials.installed.client_id;
  var redirectUrl = credentials.installed.redirect_uris[0];
  var oauth2Client = new OAuth2(clientId, clientSecret, redirectUrl);

  // Check if we have previously stored a token.
  fs.readFile(TOKEN_PATH, function(err, token) {
    if (err) {
      getNewToken(oauth2Client, callback);
    } else {
      oauth2Client.credentials = JSON.parse(token);
      callback(oauth2Client);
    }
  });
}

/**
 * Get and store new token after prompting for user authorization, and then
 * execute the given callback with the authorized OAuth2 client.
 *
 * @param {google.auth.OAuth2} oauth2Client The OAuth2 client to get token for.
 * @param {getEventsCallback} callback The callback to call with the authorized
 *     client.
 */
function getNewToken(oauth2Client, callback) {
  var authUrl = oauth2Client.generateAuthUrl({
    access_type: 'offline',
    scope: SCOPES
  });
  console.log('Authorize this app by visiting this url: ', authUrl);
  var rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
  });
  rl.question('Enter the code from that page here: ', function(code) {
    rl.close();
    oauth2Client.getToken(code, function(err, token) {
      if (err) {
        console.log('Error while trying to retrieve access token', err);
        return;
      }
      oauth2Client.credentials = token;
      storeToken(token);
      callback(oauth2Client);
    });
  });
}

/**
 * Store token to disk be used in later program executions.
 *
 * @param {Object} token The token to store to disk.
 */
function storeToken(token) {
  try {
    fs.mkdirSync(TOKEN_DIR);
  } catch (err) {
    if (err.code != 'EEXIST') {
      throw err;
    }
  }
  fs.writeFile(TOKEN_PATH, JSON.stringify(token), (err) => {
    if (err) throw err;
    console.log('Token stored to ' + TOKEN_PATH);
  });
}

/**
 * Lists the names and IDs of up to 10 files.
 *
 * @param {google.auth.OAuth2} auth An authorized OAuth2 client.
 */
function getChannel(auth) {
  var service = google.youtube('v3');
  service.channels.list({
    auth: auth,
    part: 'snippet,contentDetails,statistics',
    forUsername: 'GoogleDevelopers'
  }, function(err, response) {
    if (err) {
      console.log('The API returned an error: ' + err);
      return;
    }
    var channels = response.data.items;
    if (channels.length == 0) {
      console.log('No channel found.');
    } else {
      console.log('This channel\'s ID is %s. Its title is \'%s\', and ' +
                  'it has %s views.',
                  channels[0].id,
                  channels[0].snippet.title,
                  channels[0].statistics.viewCount);
    }
  });
}

Passaggio 4: esegui l'esempio

Esegui l'esempio utilizzando il comando seguente:

node quickstart.js

La prima volta che esegui l'esempio, ti verrà richiesto di autorizzare l'accesso:

  1. Nel browser web, vai all'URL fornito.

    Se non hai ancora eseguito l'accesso al tuo Account Google, ti verrà chiesto di accedere. Se hai eseguito l'accesso a più Account Google, ti verrà chiesto di selezionare un account da utilizzare per l'autorizzazione.

  2. Fai clic sul pulsante Accetta.
  3. Copia il codice che ti viene fornito, incollalo nel prompt della riga di comando e premi Invio.

Note

  • Le informazioni di autorizzazione vengono archiviate nel file system, quindi le esecuzioni successive non richiederanno l'autorizzazione.
  • Il flusso di autorizzazione in questo esempio è progettato per un'applicazione a riga di comando. Per informazioni su come eseguire l'autorizzazione in un'applicazione web che utilizza l'API di dati di YouTube, consulta la pagina Utilizzo di OAuth 2.0 per le applicazioni server web.

    Per informazioni su come eseguire l'autorizzazione in altri contesti, consulta la sezione Autorizzazione e autenticazione del file README della libreria.

Per approfondire