Youtube API - 403 Forbidden:简单Get请求的开发人员密钥无效

时间:2012-04-25 10:16:57

标签: c# youtube-api youtube.net-api

我刚刚开始使用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但我不能在下一页添加新产品。

1 个答案:

答案 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。