Python:将 Base64 编码为 Basic 连接到 API

Cre*_*ara 4 python authentication api json

我正在尝试连接到 API,我必须对用户名和密码进行编码。“授权”值应如下所示:Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ

当我尝试连接时,出现错误:“未经授权:凭据错误”。支持人员说我的凭据没问题,但他们对解决我的问题的反应很慢。

我怀疑代码的编码部分,但我不确定。你能看看我的代码并告诉我它可能有什么问题吗?

文档中有关身份验证部分的直接链接:http : //developer.outbrain.com/home-page/amplify-api/documentation/#/reference/authentications/via-api

m = str(base64.b64encode(b'xxxxx:xxxxxxx'))
headers = {
    'Authorization': 'Basic ' + m + ''
}
r = requests.get('https://api.outbrain.com/amplify/v0.1/login', headers=headers)
print(r.json())
Run Code Online (Sandbox Code Playgroud)

cod*_*ody 6

您需要使用decode从字节序列中正确获取字符串:

错误(注意结果中的 'b' 前缀和单引号):

>>> str(base64.b64encode(b'test'))
"b'dGVzdA=='"
Run Code Online (Sandbox Code Playgroud)

对:

>>> base64.b64encode(b'test').decode('utf-8')
'dGVzdA=='
Run Code Online (Sandbox Code Playgroud)

此外,requests可以为您执行此操作:

from requests.auth import HTTPBasicAuth
r = requests.get('https://api.outbrain.com/amplify/v0.1/login', auth=HTTPBasicAuth('user', 'pass'))
Run Code Online (Sandbox Code Playgroud)