我刚刚开始使用Youtube API,我面临着一些我无法解释的问题。 基本上,我只需要从Youtube检索视频,我很确定你不需要进行身份验证(如果没有,请告诉我)。 在完成API文档之后,我有了这个非常基本的请求:http://gdata.youtube.com/feeds/api/videos?q=ted+talks&max-results=10&v=2(搜索“ted talks”并获取前10个)。
直接在浏览器中或通过http请求执行此请求的工作证实了我的信念,即不需要对其进行身份验证。
但事情是这样的,我想使用Google提供的.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 Forbidden错误(无效的开发人员密钥)。 难道我做错了什么? 这种电话真的需要开发人员密钥吗? 如果我这样做,我试图去那里https://code.google.com/apis/youtube/dashboard/gwt/index.html#settings但我不能在下一页添加新产品。
答案 0 :(得分: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。