我正在尝试使用musixmatch api。 要获取我需要首先进行身份验证的json数据,我有api密钥但我无法进行身份验证。 我想知道如何使用urllib2进行身份验证 感谢:
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 :(得分:1)
这不是python中的身份验证问题,但是api期待你的api密钥的方式存在问题。
此页面:https://developer.musixmatch.com/documentation/input-parameters表示您必须始终将api密钥作为参数发送,因此此代码完全符合以下条件:
#!/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,它似乎很容易使用。