Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的身份验证是如何工作的?_Python_Authentication_Urllib2_Api Key - Fatal编程技术网

python中的身份验证是如何工作的?

python中的身份验证是如何工作的?,python,authentication,urllib2,api-key,Python,Authentication,Urllib2,Api Key,我正在努力制作musixmatch。 要获取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.

我正在努力制作musixmatch。 要获取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()
这里

我得到的答复是:

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

这不是python中的身份验证问题,而是api期望api密钥的方式问题

此页面:说明必须始终将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:你也可以使用这个库(),它围绕着api,似乎很容易使用。

你能在你的问题中包括你的
api\u KEY\u BASE\u 64
吗?我不能给出我的整个api密钥,但它看起来像这个api\u KEY\u BASE\u 64=“25600XXXXXXXXXXXXXXXXXXXXXXXXX65”这样?或者一个示例密钥来测试它。您可以使用
requests
python-lib进行此api调用,另外我认为您应该在api调用中包含
content-type
#!/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