Node.js Hızlı Başlangıç Kılavuzu

Bu sayfanın geri kalanında açıklanan adımları tamamladığınızda yaklaşık beş dakika içinde YouTube Data API'ye istek gönderen basit bir Node.js komut satırı uygulamasına sahip olursunuz.

Bu kılavuzda kullanılan örnek kod, Google Developers YouTube kanalı için channel kaynağını alır ve bu kaynaktaki bazı temel bilgileri yazdırır.

Ön koşullar

Bu hızlı başlangıç kılavuzunu çalıştırmak için şunlar gerekir:

  • Node.js yüklü olmalıdır.
  • npm paket yönetim aracı (Node.js ile birlikte gelir).
  • İnternete ve web tarayıcıya erişim.
  • Google Hesabı

1. Adım: YouTube Data API'yi etkinleştirin

  1. Google Developers Console'da proje oluşturmak veya mevcut bir projeyi seçmek ve API'yi otomatik olarak etkinleştirmek için bu sihirbazı kullanın. Devam'ı, ardından Kimlik bilgilerine git'i tıklayın.

  2. Kimlik bilgileri oluştur sayfasında İptal düğmesini tıklayın.

  3. Sayfanın üst kısmından OAuth izin ekranı sekmesini seçin. Bir e-posta adresi seçin, henüz ayarlanmadıysa bir ürün adı girin ve Kaydet düğmesini tıklayın.

  4. Kimlik bilgileri sekmesini seçin, Kimlik bilgileri oluştur düğmesini tıklayın ve OAuth istemci kimliği'ni seçin.

  5. Uygulama türünü Diğer olarak seçin, "YouTube Data API Hızlı Başlangıç Kılavuzu" adını girin ve Oluştur düğmesini tıklayın.

  6. Sonuç olarak açılan iletişim kutusunu kapatmak için Tamam'ı tıklayın.

  7. İstemci kimliğinin sağındaki (JSON'u indir) düğmesini tıklayın.

  8. İndirilen dosyayı çalışma dizininize taşıyın ve yeniden adlandırınclient_secret.json.

2. Adım: İstemci kitaplığını yükleyin

Kitaplıkları npm kullanarak yüklemek için aşağıdaki komutları çalıştırın:

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

3. Adım: Örneği ayarlayın

Çalışma dizininizde quickstart.js adlı bir dosya oluşturun ve aşağıdaki kodu kopyalayın:

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

4. Adım: Sana Özel'i çalıştırın

Aşağıdaki komutu kullanarak örneği çalıştırın:

node quickstart.js

Sana Özel'i ilk kez çalıştırdığınızda erişim için yetki vermenizi ister:

  1. Web tarayıcınızda sağlanan URL'ye gidin.

    Google Hesabınıza giriş yapmadıysanız giriş yapmanız istenir. Birden fazla Google Hesabı'na giriş yaptıysanız yetkilendirme için kullanılacak bir hesap seçmeniz istenir.

  2. Kabul et düğmesini tıklayın.
  3. Size verilen kodu kopyalayın, komut satırı isteminde yapıştırın ve Enter tuşuna basın.

Notlar

  • Yetkilendirme bilgileri dosya sisteminde depolandığından sonraki yürütmelerde yetkilendirme istemi gösterilmez.
  • Bu örnekteki yetkilendirme akışı, komut satırı uygulaması için tasarlanmıştır. YouTube Data API'yi kullanan bir web uygulamasında yetkilendirmenin nasıl yapılacağı hakkında bilgi edinmek için Web Sunucusu Uygulamaları için OAuth 2.0'ı Kullanma başlıklı makaleyi inceleyin.

    Yetkilendirmenin diğer bağlamlarda nasıl yapılacağı hakkında bilgi edinmek için kitaplığın README dosyasının Yetkilendirme ve Kimlik Doğrulama bölümüne bakın.

Daha fazla bilgi