2014-12-14 2 views
1

Я пытаюсь работать над musixmatch api. Чтобы получить данные json, мне нужно сначала выполнить аутентификацию, у меня есть ключ api, но я не могу аутентифицироваться. Я хотел бы знать, как аутентификация с помощью urllib2 Thanks:Как работает аутентификация на python?

Ps: Я пытался сделать это:

def download_file(url, API_KEY_BASE_64): 
    req = urllib2.Request(url) 
    req.add_header("Authorization", "Basic "+API_KEY_BASE_64) 
    return urllib2.urlopen(req).read() 

здесь

url="http://api.musixmatch.com/ws/1.1/track.lyrics.get?track_id=15953433" 
api_key="MYAPIKEY" 

ответ я получил это:

{"message":{"header":{"status_code":401,"execute_time":0.0019550323486328,"maintenance_id":0},"body":""}} 
+0

Можете ли вы включить свой 'API_KEY_BASE_64' в свой вопрос? –

+0

Не могу получить весь мой ключ api, но он выглядит так: API_KEY_BASE_64 = «25600XXXXXXXXXXXXXXXXXXXXXXXXXX» – Nagraj93

+0

вот так? Или образец ключа для его проверки. Вы можете использовать 'request' python lib, чтобы сделать этот api-вызов плюс, я думаю, вы должны включить' content-type' в ваш api-вызов. –

ответ

1

Это не проблема с аутентификацией в python, b проблема с тем, как api ожидает ваш ключ api.

Эта страница: https://developer.musixmatch.com/documentation/input-parameters гласит, что вы должны всегда отправить ключ апи в качестве параметра, так что этот код делает именно то, что:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import urllib2 

api_key="XXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
# Note how I'm adding the api key as a parameter of the request url 
url="http://api.musixmatch.com/ws/1.1/track.lyrics.get?track_id=15953433&apikey={}".format(api_key) 

req = urllib2.Request(url) 
req.add_header("Accept", "application/json") 
response = urllib2.urlopen(req).read() 
print response 

PS: Вы можете также использовать эту библиотеку (https://github.com/monkeython/musixmatch), его обертывает вокруг api и кажется простым в использовании.

Смежные вопросы