0

我刚从 Youtube API 开始,我面临着一些我无法解释的事情。基本上,我只需要从 Youtube 检索视频,我很确定您不需要为此进行身份验证(如果不需要,请告诉我)。在通过 API 文档之后,我有这个非常基本的请求:http ://gdata.youtube.com/feeds/api/videos?q= ted+talks&max-results=10&v=2 (搜索“ted talk”并采取前 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但我无法在下一页中添加新产品。

4

1 回答 1

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 格式获取结果。

于 2012-04-25T10:33:05.183 回答