2014-09-10 9 views
5

Desidero elencare un gruppo di video da YouTube nella mia app mobile utilizzando angularjs. Preferibilmente vorrei elencare tutti i video di una playlist specifica per utente/canale.Come utilizzare API KEY con YouTube in angularjs e elencare i video in una playlist?

Ho ottenuto l'API KEY dalla Google Developer Console ma non capisco come e dove utilizzarlo. In questa documentazione essi vanno solo oltre il metodo oauth. https://developers.google.com/youtube/v3/code_samples/javascript#authorizing_requests Ho provato ad usare il codice di esempio direttamente da quella documentazione solo per ottenere un messaggio che diceva che devo prima autenticarlo.

Apprezzerei molto l'aiuto in questo. Come autenticarsi utilizzando la chiave API e in secondo luogo come effettuare la richiesta per ottenere i video in una playlist.

ps. Sono uno sviluppatore principiante e sto usando angularjs e framework ionico per il mio primo progetto di apprendimento. Sono appena uscito dai corsi di Codeschool in css, jquery, javascript, backbone e angular. ds. Grazie!

+1

solo per elencare i video del canale che non è necessario autenticare – mpgn

+0

oh, bello! Quindi devo solo capire come richiedere l'elenco e mostrarlo :) –

risposta

1

È necessario utilizzare Google APIs Client Library in modo che l'oggetto gapi venga definito ed esempi da Google funzioneranno. Includere questo nella parte inferiore della pagina:

<script src="https://apis.google.com/js/client.js?onload=googleApiClientReady"></script> 

E di definire callback che procederà con l'autorizzazione e la logica:

googleApiClientReady = function() { 
    gapi.auth.init(function() { 
    // Other code following the example 
    }); 
} 

In generale secondo Google documentation ci sono

  1. L'applicazione carica la libreria client JavaScript.

  2. L'applicazione fa riferimento alla sua chiave API, che autentica l'applicazione con i servizi di Google.

  3. Se l'applicazione richiede l'accesso alle informazioni personali dell'utente, apre una sessione con un server di autenticazione di Google. Il server di autenticazione apre una finestra di dialogo che richiede all'utente di autorizzare l'uso delle informazioni personali.

  4. L'applicazione carica l'API per il servizio Google.

  5. L'applicazione inizializza un oggetto di richiesta (denominato anche oggetto servizio) che specifica i dati che devono essere restituiti dall'API.

  6. L'applicazione esegue la richiesta ed elabora i dati restituiti dall'API.

Ecco una working example del processo di autorizzazione di Google di base API

14

1. Come utilizzare l'API

Se si desidera video di un canale è necessario utilizzare il YouTube API V3.Utilizzare youtube.search.list

con i parametri:

part=id, snippet 
channelId=ID OF THE CHANNEL 
order=date 
type=video 

Come trovare ID di un canale di YouTube?

È possibile trovare l'ID di un canale con il suo nome di canale con http://mpgn.github.io/YTC-ID/

Ulteriori informazioni youtube.search.list destra here.

Questo è un live demo.

2. Con Javascript?

  • Innanzitutto, è necessario creare un progetto in console.google.developers.
  • Abilita l'API YouTube API V3 (impostato su on).
  • Nella parte credenziale, crea una chiave di accesso pubblica.

Anche se si tratta di un'applicazione pubblica, potrebbe interessare da: How to protect my public API key ?

Questo è il codice di base per ottenere i video di un canale:

<!DOCTYPE html> 
<html> 
<head> 
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script> 
    <meta charset="utf-8"> 
    <title>JS Bin</title> 
</head> 
<body> 
    <script> 

function googleApiClientReady() { 

    var apiKey = 'your api key'; 

    gapi.client.setApiKey(apiKey); 
    gapi.client.load('youtube', 'v3', function() { 

     request = gapi.client.youtube.search.list({ 
      part: 'snippet', 
      channelId: 'UCqhNRDQE_fqBDBwsvmT8cTg', 
      order: 'date', 
      type: 'video' 

     }); 

     request.execute(function(response) { 
       console.log(response); 

     }); 
    }); 

} 
    </script> 
    <script src="https://apis.google.com/js/client.js?onload=googleApiClientReady"></script> 
</body> 
</html> 

3. Con AngularJS?

Con AngularJS è necessario creare un servizio "google", ad esempio, ed è possibile utilizzare il servizio nei controller.

Un esempio di esempio: https://gist.github.com/jakemmarsh/5809963 Non è necessaria la parte con autenticazione. L'utilizzo di deferred è importante in questo caso.

Esempio nel controller

'use strict'; 

function init() { 
    window.initGapi(); // Calls the init function defined on the window 
} 
angular.module('team') 
    .controller('VideosCtrl', function ($scope, $window, $sce, googleService) { 

     $window.initGapi = function() { 
      $scope.$apply($scope.getChannel); 
     }; 

     $scope.getChannel = function() { 
      googleService.googleApiClientReady().then(function (data) { 
       $scope.channel = data; 
      }, function (error) { 
       console.log('Failed: ' + error) 
      }); 
     }; 
    }); 

esempio nel servizio googleService

.service('googleService', ['$http', '$q', function ($http, $q) { 

    var deferred = $q.defer(); 
    this.googleApiClientReady = function() { 
     gapi.client.setApiKey('YOU API KEY'); 
     gapi.client.load('youtube', 'v3', function() { 
      var request = gapi.client.youtube.playlistItems.list({ 
       part: 'snippet', 
       playlistId: 'PLila01eYiSBjOtR8oqXkY0i5c1QS6k2Mu', 
       maxResults: 8 
      }); 
      request.execute(function(response) { 
       deferred.resolve(response.result); 
      }); 
     }); 
     return deferred.promise; 
    }; 
}]) 

È necessario aggiungere questa riga al vostro index.html

<script src="https://apis.google.com/js/client.js?onload=init"></script> 

Speranza è hel p tu!

+0

Grazie @martialdidi! Ma ora sono bloccato ... L'ho fatto bene alla parte 3. Ho creato un servizio ma poi non so come usare il controller per ottenere i dati sul DOM. Puoi dare una mano? –

+3

vuoi dire che non sai come usare AngularJS? – mpgn

+0

Haha si. Sono uno sviluppatore principiante e sto usando angularjs e framework ionico per il mio primo progetto di apprendimento. Sono appena uscito dai corsi di Codeschool in css, jquery, javascript, backbone e angular. Scusa, ho dimenticato di menzionare il mio stato n00b in questa domanda. Di solito lo faccio. –

Problemi correlati