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 di esempio utilizzato in questa guida recupera la risorsa channel per il canale YouTube GoogleDevelopers e stampa alcune informazioni di base di questa risorsa.

Prerequisiti

Per eseguire questa guida rapida, devi disporre di:

  • Node.js è stato installato.
  • Lo strumento di gestione dei pacchetti npm (incluso in 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, quindi su Vai alle credenziali.

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

  3. Nella parte superiore della pagina, seleziona la scheda Schermata di 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 introduttiva all'API YouTube Data" e fai clic sul pulsante Crea.

  6. Fai clic su OK per chiudere 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 i seguenti comandi per installare le librerie utilizzando npm:

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

Passaggio 3: configura il sample

Crea un file denominato quickstart.js nella directory di lavoro e copia al suo interno il 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 il sample

Esegui l'esempio utilizzando il seguente comando:

node quickstart.js

La prima volta che esegui il sample, ti verrà chiesto di autorizzare l'accesso:

  1. Vai all'URL fornito nel browser web.

    Se non hai ancora eseguito l'accesso al tuo Account Google, ti verrà chiesto di farlo. 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 memorizzate nel file system, pertanto le esecuzioni successive non richiederanno l'autorizzazione.
  • Il flusso di autorizzazione in questo esempio è progettato per un'applicazione di riga di comando. Per informazioni su come eseguire l'autorizzazione in un'applicazione web che utilizza l'API YouTube Data, consulta l'articolo sull'utilizzo di OAuth 2.0 per 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