Python 3.7 TypeError: a bytes-like object is required, not 'str'
Python 3.7 TypeError: a bytes-like object is required, not 'str'
我有这两个字符串:
client_id = "id_str"
client_secret = "secret_str"
而且我必须像这样通过它们:
def getToken(code, client_id, client_secret, redirect_uri):
body = {
"grant_type": 'authorization_code',
"code" : code,
"redirect_uri": redirect_uri,
"client_id": client_id,
"client_secret": client_secret
}
encoded = base64.b64encode("{}:{}".format(client_id, client_secret))
headers = {"Content-Type" : HEADER, "Authorization" : "Basic {}".format(encoded)}
post = requests.post(SPOTIFY_URL_TOKEN, params=body, headers=headers)
return handleToken(json.loads(post.text))
但是当我这样做时我得到了错误:
encoded = base64.b64encode("{}:{}".format(client_id, client_secret))
File "/usr/local/lib/python3.7/base64.py", line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'
如何为 Python 3.7
解决这个 encoding/formatting?
ps:我没有看到此 answer 地址格式 {} 以及编码。
换行
encoded = base64.b64encode("{}:{}".format(client_id, client_secret))
至
encoded = base64.b64encode("{}:{}".format(client_id, client_secret).encode())
根据 documentation:
base64.b64encode(s, altchars=None)
Encode the bytes-like object s using Base64 and return the encoded bytes.
关于您的异议:
the linked answer does not address formatting
实际上你的问题与格式化无关,因为format()
只是returns一个字符串,但是b64encode
需要一个类似字节的对象,而不是字符串。
我有这两个字符串:
client_id = "id_str"
client_secret = "secret_str"
而且我必须像这样通过它们:
def getToken(code, client_id, client_secret, redirect_uri):
body = {
"grant_type": 'authorization_code',
"code" : code,
"redirect_uri": redirect_uri,
"client_id": client_id,
"client_secret": client_secret
}
encoded = base64.b64encode("{}:{}".format(client_id, client_secret))
headers = {"Content-Type" : HEADER, "Authorization" : "Basic {}".format(encoded)}
post = requests.post(SPOTIFY_URL_TOKEN, params=body, headers=headers)
return handleToken(json.loads(post.text))
但是当我这样做时我得到了错误:
encoded = base64.b64encode("{}:{}".format(client_id, client_secret))
File "/usr/local/lib/python3.7/base64.py", line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'
如何为 Python 3.7
解决这个 encoding/formatting?
ps:我没有看到此 answer 地址格式 {} 以及编码。
换行
encoded = base64.b64encode("{}:{}".format(client_id, client_secret))
至
encoded = base64.b64encode("{}:{}".format(client_id, client_secret).encode())
根据 documentation:
base64.b64encode(s, altchars=None)
Encode the bytes-like object s using Base64 and return the encoded bytes.
关于您的异议:
the linked answer does not address formatting
实际上你的问题与格式化无关,因为format()
只是returns一个字符串,但是b64encode
需要一个类似字节的对象,而不是字符串。