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 olacaksınız.

Bu kılavuzda kullanılan örnek kod, GoogleDevelopers YouTube kanalının channel kaynağını alıp bu kaynaktan bazı temel bilgileri yazdırır.

Ön koşullar

Bu hızlı başlangıç kılavuzunu çalıştırmak için ihtiyacınız olanlar:

  • Node.js'nin yüklü olması gerekir.
  • npm paket yönetim aracı (Node.js ile birlikte gelir).
  • İnternet erişimi ve web tarayıcısı
  • Google Hesabı

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

  1. Google Developers Console'da proje oluşturmak veya 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 bilgisi 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 ayarlanmamışsa ürün adını girin ve Kaydet düğmesini tıklayın.

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

  5. Diğer uygulama türünü seçin, "YouTube Data API Quickstart" adını girin ve Oluştur düğmesini tıklayın.

  6. Sonuçta ortaya çıkan iletişim kutusunu kapatmak için Tamam'ı tıklayın.

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

  8. İndirilen dosyayı çalışma dizininize taşıyın ve yeniden adlandırın client_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: Örnek oluşturun

Ç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: Örneği çalıştırın

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

node quickstart.js

Örneği ilk kez çalıştırdığınızda erişimi yetkilendirmeniz istenir:

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

    Google Hesabınıza henüz giriş yapmadıysanız giriş yapmanız istenir. Birden fazla Google Hesabı'nda oturum açtıysanız yetkilendirme için kullanmak istediğiniz hesabı seçmeniz istenir.

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

Notlar

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

    Diğer bağlamlarda yetkilendirme işleminin 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