0

我尝试编写一个简单的 youtube 请求来使用 youtube javascript api v3 搜索视频。

这是源代码:

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript">

       function showResponse(response) {
           var responseString = JSON.stringify(response, '', 2);
           document.getElementById('response').innerHTML += responseString;
        }

       // Called automatically when JavaScript client library is loaded.
       function onClientLoad() {
          gapi.client.load('youtube', 'v3', onYouTubeApiLoad);
       }

       // Called automatically when YouTube API interface is loaded
      function onYouTubeApiLoad() {
        // This API key is intended for use only in this lesson.
        gapi.client.setApiKey('API_KEY');

        search();
       }

       function search() {
         var request = gapi.client.youtube.search.list({
             part: 'snippet',
             q:'U2'

        });

        // Send the request to the API server,
        // and invoke onSearchRepsonse() with the response.
        request.execute(onSearchResponse);
    }

    // Called automatically with the response of the YouTube API request.
    function onSearchResponse(response) {
        showResponse(response);
    }


    </script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script src="https://apis.google.com/js/client.js?onload=onClientLoad" type="text/javascript"></script>
</head>
<body>
    <pre id="response"></pre>
</body>
</html>

当我在谷歌浏览器(更新)上加载此页面时,没有任何反应,页面保持空白。我已请求浏览器应用程序的 API 密钥(带有引用者)并复制到方法 gapi.client.setApiKey 中。

任何人都可以帮助我吗?

谢谢

4

4 回答 4

2

在这里试试这个例子

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google AJAX Search API Sample</title>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
    // How to search through a YouTube channel aka http://www.youtube.com/members

    google.load('search', '1');

    function OnLoad() {

      // create a search control
      var searchControl = new google.search.SearchControl();

      // So the results are expanded by default
      options = new google.search.SearcherOptions();
      options.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);

      // Create a video searcher and add it to the control
      searchControl.addSearcher(new google.search.VideoSearch(), options);

      // Draw the control onto the page
      searchControl.draw(document.getElementById("content"));

      // Search
      searchControl.execute("U2");
    }

    google.setOnLoadCallback(OnLoad);
    </script>
  </head>
  <body style="font-family: Arial;border: 0 none;">
    <div id="content">Loading...</div>
  </body>
</html>
于 2013-08-07T15:36:40.283 回答
1

当您使用 <script src="https://apis.google.com/js/client.js?onload=onClientLoad" ..></script>

您必须在线上传 html 文件或在您的 PC 上使用 XAMPP

要使用 html 搜索 YT 视频,在 PC 上使用 Javascript,据我所知,我们需要使用其他编码:

1- 对 API 2.0 版使用与此类似的 JavaScript 代码。除了 API KEY v3 的存在。

2- 为此目的使用 jQuery 方法“$.get(..)”。

见: http: //play-videos.url.ph/v3/search-50-videos.html

有关更多详细信息,请参阅(我的帖子“用于搜索视频的 JAVASCRIPT”):

http://phanhung20.blogspot.com/2015_09_01_archive.html

var maxRes = 50; 
 function searchQ(){
      query = document.getElementById('queryText').value;
      email = 'https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=50'+
      '&order=viewCount&q='+ query + '&key=****YOUR API3 KEY*****'+
      '&callback=myPlan';
      var oldsearchS = document.getElementById('searchS');
      if(oldsearchS){
            oldsearchS.parentNode.removeChild(oldsearchS);
      }
      var s = document.createElement('script');
      s.setAttribute('src', email);
      s.setAttribute('id','searchS');
      s.setAttribute('type','text/javascript');
      document.getElementsByTagName('head')[0].appendChild(s);
  }
    
  function myPlan(response){
          for (var i=0; i<maxRes;i++){
          var videoID=response.items[i].id.videoId;
          if(typeof videoID != 'undefined'){    
          var title=response.items[i].snippet.title;
          var links = '<br><img src="http://img.youtube.com/vi/'+ videoID + 
                '/default.jpg" width="80" height="60">'+
                '<br>'+(i+1)+ '.&nbsp;<a href="#" onclick="playVid(\''+ videoID + 
                '\');return false;">'+ title + '</a><br>';
          document.getElementById('list1a').innerHTML += links ;
          }
      }        
 }
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body>
  <input type="text"  value="abba" id="queryText" size="80">&nbsp;
  <button type="button" onclick="searchQ()">Search 50 videos</button>
  <br><br>
  <div id='list1a' style="width:750px;height:300px;overflow:auto;
  text-align:left;background-color:#eee;line-height:150%;padding:10px">
  </div>

于 2015-12-12T20:12:12.190 回答
0

我使用了汤姆发布的原始代码,它给了我 403 访问权限错误。当我回到我的 api 控制台并检查我的 api 访问时间时,它已过期。所以我重新创建了 api 的访问时间。它重生了新的时间。并且代码在结果上运行良好。

于 2013-10-05T04:23:10.890 回答
-1

简单地说,我必须从网络服务器发出请求。

谢谢大家的回复

于 2013-08-07T17:56:52.647 回答