Youtube API — 403 Forbidden: неверный ключ разработчика для простого запроса Get

Я только начинаю работать с Youtube API и сталкиваюсь с чем-то, что не могу объяснить. По сути, мне просто нужно получить видео с Youtube, и я уверен, что вам не нужно проходить аутентификацию для этого (если нет, сообщите мне). После просмотра документа API у меня есть очень простой запрос: http://gdata.youtube.com/feeds/api/videos?q=ted+talks&max-results=10&v=2 (ищет "ted talks" и получает первые 10).

Выполнение этого запроса непосредственно в браузере или через http-запрос работает, что подтверждает мою уверенность в том, что для этого нет необходимости проходить аутентификацию.

Но вот в чем дело, я хотел бы использовать клиентскую библиотеку .NET, которую предоставляет Google, чтобы избежать всей обработки/десериализации 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, но я не могу добавить новый продукт на следующей странице.


person alexpoint    schedule 25.04.2012    source источник


Ответы (1)


Я не думаю, что вам нужен ключ разработчика. Я проверил ваш URL-адрес (используя 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.

person L.B    schedule 25.04.2012
comment
Спасибо за это решение. Это действительно работает (только что проверил). Однако причина, по которой я хотел использовать клиентскую библиотеку, заключалась в том, чтобы иметь доступ к intellisense и т. Д. (Что я не могу использовать с вашим методом). - person alexpoint; 25.04.2012