Получение 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)