Youtube API - 403 禁止访问:简单获取请求的开发人员密钥无效

本文关键字:开发 请求 无效 密钥 获取 简单 API 禁止 访问 Youtube | 更新日期: 2023-09-27 18:32:07

我刚刚开始使用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 禁止访问错误(开发人员密钥无效)。我做错了什么吗?我真的需要开发人员密钥才能进行此类调用吗?如果我这样做,我试图去那里 https://code.google.com/apis/youtube/dashboard/gwt/index.html#settings 但我无法在下一页中添加新产品。

Youtube API - 403 禁止访问:简单获取请求的开发人员密钥无效

我认为你不需要开发人员密钥。我测试了您的网址(使用 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 格式获取结果。