Получение HTTP 403 при извлечении данных из API gdata в представлении Django - PullRequest
1 голос
/ 28 мая 2011

При попытке получить данные из API YouTube YouTube, используя urllib2.urlopen, я получаю ошибку HTTP 403.Я отключил промежуточное программное обеспечение CSRF для целей отладки, и представление, которое я использую, выглядит следующим образом:

def videos (request):
    params = {}
    youtube_search_url = 'http://gdata.youtube.com/feeds/api/videos'
    params['order_by'] = 'relevance'
    params['max_results'] = 10
    params['safeSearch'] = 'strict'
    params['v'] = 2
    params['key'] = '<developer key>'
    f = urllib2.urlopen(youtube_search_url, encoded_params)
    ...

Есть идеи?

1 Ответ

1 голос
/ 29 мая 2011
When you make an API request, use the X-GData-Key request header to specify your developer key as shown in the following example:

X-GData-Key: key=<developer_key>

Include the key query parameter in the request URL.

http://gdata.youtube.com/feeds/api/videos?q=SEARCH_TERM&key=DEVELOPER_KEY

^^ Прямо изо рта лошади. Вам не хватает заголовка запроса X-GData-Key. Кажется, ключ необходим как в URL, так и в заголовке, поэтому, учитывая ваш предыдущий код, попробуйте это:

req = urllib2.Request(youtube_search_url, encoded_params, { "X-GData-Key": '<developer key>' })
f = urllib2.urlopen(req)
...