2012-04-25 50 views
0

我刚刚开始使用Youtube API,我正面临一些我无法解释的事情。 基本上,我只需要从YouTube上检索视频,我很确定你不需要进行认证(如果没有,请告诉我)。 经过API文档后,我有这个非常基本的要求:http://gdata.youtube.com/feeds/api/videos?q=ted+talks&max-results=10&v=2(搜索“特德会谈”,并采取前10名)。Youtube API - 403 Forbidden:一个简单的获取请求无效的开发人员密钥

直接在浏览器或通过http请求执行此请求的作品证实了我相信不需要进行身份验证。

但这里的东西,我想用.NET客户端库,谷歌提供,以避免所有的XML处理/反序列化,并在这里是我的代码:

public string Test() 
    { 
     YouTubeRequestSettings settings = new YouTubeRequestSettings("Otello", String.Empty); 
     YouTubeRequest request = new YouTubeRequest(settings); 
     Feed<Video> feed = request.Get<Video>(new Uri("http://gdata.youtube.com/feeds/api/videos?q=ted+talks&max-results=10&v=2")); 
     return feed.Entries.Count() + ""; 
    } 

该代码总是返回一个403禁止的错误(无效的开发人员密钥)。 我做错了什么? 我是否真的需要这种类型的调用的开发人员密钥? 如果我这样做,我试着去那里https://code.google.com/apis/youtube/dashboard/gwt/index.html#settings但我无法在下一页添加新产品。

回答

0

我不认为你需要开发人员密钥。我测试您的网址(使用Json.Net),如下,它的工作原理

WebClient wc = new WebClient(); 
string resultStr = wc.DownloadString("http://gdata.youtube.com/feeds/api/videos?q=ted+talks&max-results=10&v=2&alt=jsonc"); 
dynamic result = JsonConvert.DeserializeObject(resultStr); 
foreach (var item in result.data.items) 
{ 
    Console.WriteLine("{0}: {1}",item.title,item.player["default"]); 
} 

PS:我追加&alt=jsonc得到JSON作为结果。你可以删除它,并得到结果为XML。

+0

感谢您的解决方案。它确实有效(我只是测试了它)。 但是,我想使用客户端库的原因是有权访问智能感知等...(我无法使用您的方法)。 – alexpoint 2012-04-25 12:09:06

相关问题