gapi.client.youtube is undefined?
javascript, youtube, youtube-api, youtube-data-api
Solution
The problem is that the `gapi.client.load` method takes a bit of time to complete, and it is asynchronous, so your page (which you've set up to be synchronous) is going on and running the `searchA()` method before the youtube library is fully loaded. There are two ways around this. One is to use the callback argument of the load method, like this:
<html>
<body>
<script>
function googleApiClientReady(){
gapi.client.setApiKey('API_KEY');
gapi.client.load('youtube', 'v3', function() {
searchA();
});
}
function searchA() {
var q = 'pink floyd';
var request = gapi.client.youtube.channels.list({
part: 'statistics',
forUsername : 'GameSprout'
});
request.execute(function(response) {
var str = JSON.stringify(response.result);
alert(str);
});
}
</script>
</body>
</html>
If you'd prefer, you could also wrap a promise around the loading callback:
<html>
<body>
<script>
googleApiClientReady=function() {
loadApi() = function() {
return new Promise(function(resolve,reject){
gapi.client.setApiKey('API_KEY');
gapi.client.load('youtube', 'v3', resolve);
});
};
loadApi().then(function() {
var q = 'pink floyd';
var request = gapi.client.youtube.channels.list({
part: 'statistics',
forUsername : 'GameSprout'
});
request.execute(function(response) {
var str = JSON.stringify(response.result);
alert(str);
});
});
};
</script>
<script src="https://apis.google.com/js/client.js?onload=googleApiClientReady"></script>
</body>
</html>
Problem
I am trying to use youtube api for javascript and am getting 'gapi.client.youtube is undefined'. I have gone through the link: Why is 'gapi.client.youtube' from Youtube Data Api V3 undefined? , but couldn't get much help. My code is placed below: ``` <script> function load(){ gapi.client.setApiKey('API_KEY'); gapi.client.load('youtube', 'v3'); searchA(); //alert(gapi.client.youtube.channels); } function searchA() { var q = 'pink floyd'; var request = gapi.client.youtube.channels.list({ part: 'statistics', forUsername : 'GameSprout' }); request.execute(function(response) { var str = JSON.stringify(response.result); alert(str); }); ``` } ``` <script src="https://apis.google.com/js/client.js?onload=load"> ``` But its not getting gapi.client.youtube. Can anyone please help me in his issue?