Получение HTTP 403 при извлечении данных из API g data в представлении Django

При попытке извлечь данные из API YouTube gdata с помощью 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 ответ

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)
Другие вопросы по тегам