Node.js-Kurzanleitung

Wenn du die Schritte im Rest dieser Seite ausführst, hast du in etwa fünf Minuten eine einfache Node.js-Befehlszeilenanwendung, die Anfragen an die YouTube Data API sendet.

Im Beispielcode in diesem Leitfaden wird die channel-Ressource für den YouTube-Kanal „GoogleDevelopers“ abgerufen und einige grundlegende Informationen aus dieser Ressource ausgegeben.

Vorbereitung

Für diese Kurzanleitung benötigen Sie Folgendes:

  • Node.js ist installiert.
  • Das Paketverwaltungstool npm (im Lieferumfang von Node.js enthalten)
  • Zugriff auf das Internet und einen Webbrowser
  • Ein Google-Konto.

Schritt 1: YouTube Data API aktivieren

  1. Verwenden Sie diesen Assistenten, um in der Google Developers Console ein Projekt zu erstellen oder auszuwählen und die API automatisch zu aktivieren. Klicken Sie auf Weiter und dann auf Zu den Anmeldedaten.

  2. Klicken Sie auf der Seite Anmeldedaten erstellen auf die Schaltfläche Abbrechen.

  3. Klicken Sie oben auf der Seite auf den Tab OAuth-Zustimmungsbildschirm. Wählen Sie eine E-Mail-Adresse aus, geben Sie einen Produktnamen ein, falls noch nicht geschehen, und klicken Sie auf die Schaltfläche Speichern.

  4. Wählen Sie den Tab Anmeldedaten aus. Klicken Sie dann auf die Schaltfläche Anmeldedaten erstellen und wählen Sie OAuth-Client-ID aus.

  5. Wählen Sie den Anwendungstyp Andere aus, geben Sie den Namen „YouTube Data API Quickstart“ ein und klicken Sie auf die Schaltfläche Erstellen.

  6. Klicken Sie auf OK, um das resultierende Dialogfeld zu schließen.

  7. Klicken Sie rechts neben der Client-ID auf die Schaltfläche (JSON herunterladen).

  8. Verschieben Sie die heruntergeladene Datei in Ihr Arbeitsverzeichnis und benennen Sie sie in client_secret.json um.

Schritt 2: Clientbibliothek installieren

Führen Sie die folgenden Befehle aus, um die Bibliotheken mit npm zu installieren:

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

Schritt 3: Beispiel einrichten

Erstellen Sie im Arbeitsverzeichnis eine Datei mit dem Namen quickstart.js und fügen Sie den folgenden Code ein:

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

Schritt 4: Beispiel ausführen

Führen Sie das Beispiel mit dem folgenden Befehl aus:

node quickstart.js

Wenn Sie das Beispiel zum ersten Mal ausführen, werden Sie aufgefordert, den Zugriff zu autorisieren:

  1. Rufen Sie die angegebene URL in Ihrem Webbrowser auf.

    Wenn Sie noch nicht in Ihrem Google-Konto angemeldet sind, werden Sie aufgefordert, sich anzumelden. Wenn Sie in mehreren Google-Konten angemeldet sind, werden Sie aufgefordert, ein Konto für die Autorisierung auszuwählen.

  2. Klicken Sie auf die Schaltfläche Akzeptieren.
  3. Kopieren Sie den Code, fügen Sie ihn in die Eingabeaufforderung ein und drücken Sie die Eingabetaste.

Hinweise

  • Autorisierungsinformationen werden im Dateisystem gespeichert, sodass bei nachfolgenden Ausführungen keine Autorisierung erforderlich ist.
  • Der Autorisierungsablauf in diesem Beispiel ist für eine Befehlszeilenanwendung konzipiert. Informationen zur Autorisierung in einer Webanwendung, die die YouTube Data API verwendet, findest du unter OAuth 2.0 für Webserveranwendungen verwenden.

    Informationen zur Autorisierung in anderen Kontexten finden Sie im Abschnitt Autorisierung und Authentifizierung der README-Datei der Bibliothek.

Weitere Informationen