Guide de démarrage rapide pour Node.js

Suivez les étapes décrites dans le reste de cette page. En cinq minutes environ, vous disposerez d'une application de ligne de commande Node.js simple qui envoie des requêtes à l'API YouTube Data.

L'exemple de code utilisé dans ce guide récupère la ressource channel pour la chaîne YouTube GoogleDevelopers et imprime certaines informations de base à partir de cette ressource.

Prérequis

Pour exécuter ce guide de démarrage rapide, vous avez besoin des éléments suivants:

  • Node.js installé.
  • L'outil de gestion de paquets npm (fourni avec Node.js)
  • Accès à Internet et à un navigateur Web.
  • Un compte Google.

Étape 1: Activez l'API YouTube Data

  1. Utilisez cet assistant pour créer ou sélectionner un projet dans la Google Developers Console et activer automatiquement l'API. Cliquez sur Continue (Continuer), puis sur Go to credentials (Accéder à Identifiants).

  2. Sur la page Create credentials (Créer des identifiants), cliquez sur le bouton Cancel (Annuler).

  3. En haut de la page, sélectionnez l'onglet OAuth consent screen (Écran d'autorisation OAuth). Sélectionnez une adresse e-mail, saisissez un nom de produit si ce n'est pas déjà fait, puis cliquez sur le bouton Enregistrer.

  4. Sélectionnez l'onglet Credentials (Identifiants), cliquez sur le bouton Create credentials (Créer des identifiants) et sélectionnez OAuth client ID (ID client OAuth).

  5. Sélectionnez le type d'application Autre, saisissez le nom "Démarrage rapide de l'API YouTube Data", puis cliquez sur le bouton Créer.

  6. Cliquez sur OK pour fermer la boîte de dialogue qui s'affiche.

  7. Cliquez sur le bouton (Télécharger JSON) à droite de l'ID client.

  8. Déplacez le fichier téléchargé dans votre répertoire de travail et renommez-le client_secret.json.

Étape 2: Installer la bibliothèque cliente

Exécutez les commandes suivantes pour installer les bibliothèques à l'aide de npm:

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

Étape 3 : Configurer l'exemple

Créez un fichier nommé quickstart.js dans votre répertoire de travail et copiez-y le code suivant:

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

Étape 4: Exécuter l'exemple

Exécutez l'exemple à l'aide de la commande suivante:

node quickstart.js

La première fois que vous exécutez l'exemple, vous êtes invité à autoriser l'accès:

  1. Accédez à l'URL indiquée dans votre navigateur Web.

    Si vous n'êtes pas encore connecté à votre compte Google, vous serez invité à le faire. Si vous êtes connecté à plusieurs comptes Google, vous êtes invité à en sélectionner un pour l'autorisation.

  2. Cliquez sur le bouton Accepter.
  3. Copiez le code qui vous est fourni, collez-le dans l'invite de ligne de commande, puis appuyez sur Entrée.

Remarques

  • Les informations d'autorisation sont stockées dans le système de fichiers. Les exécutions ultérieures ne nécessitent donc pas d'autorisation.
  • Le flux d'autorisation de cet exemple est conçu pour une application de ligne de commande. Pour savoir comment effectuer l'autorisation dans une application Web qui utilise l'API YouTube Data, consultez Utiliser OAuth 2.0 pour les applications de serveur Web.

    Pour savoir comment effectuer une autorisation dans d'autres contextes, consultez la section Autorisation et authentification du fichier README de la bibliothèque.

Documentation complémentaire