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

时间:2018-12-04 23:14:46

标签: python json api authentication

我正在尝试连接到API,并且必须对用户名和密码进行编码64。 “授权”值应如下所示:基本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())

1 个答案:

答案 0 :(得分:2)

您需要使用In [1]: import pandas as pd In [2]: df = pd.DataFrame([['a','b','c'],['1','1a','c']],columns=['Col1','Col2','Col3']) In [3]: df Out[3]: Col1 Col2 Col3 0 a b c 1 1 1a c In [4]: df.Col1.map(lambda x: int(x) if x.isnumeric() else x) Out[4]: 0 a 1 1 Name: Col1, dtype: object 来从字节序列中正确获取字符串:

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

decode

右:

>>> str(base64.b64encode(b'test'))
"b'dGVzdA=='"

另外,>>> base64.b64encode(b'test').decode('utf-8') 'dGVzdA==' 可以为您做到这一点:

requests