我正在尝试从 udemy api 获取一些数据。当我提出 GET
请求时,我得到 403 状态代码
我尝试了什么:
import requests
headers = {
'Authorization': 'Basic {BASE64_ENCODED(CLIENT_ID:CLIENT_SECRET)}',
}
response = requests.get('https://www.udemy.com/api-2.0/courses/', headers=headers)
我也尝试过使用 base64encode 和 auth,但这也没有奏效。
根据 Udemy 的说法,
<块引用>要发送经过身份验证的请求,请提供 client_id 和 client_secret 值作为 base64 编码的 HTTP 授权标头。
<块引用>curl --user {YOUR_CLIENT_ID}:{YOUR_CLIENT_SECRET} https://www.udemy.com/api-2.0/courses/
curl -H "Authorization: Basic {BASE64_ENCODED(CLIENT_ID:CLIENT_SECRET)}" https://www.udemy.com/api-2.0/courses/
预先感谢您的帮助!
答案 0 :(得分:0)
好吧,那是因为您要发送一个字符串,内容为:
"Basic {BASE64_ENCODED(CLIENT_ID:CLIENT_SECRET)}"
您没有传递实际的 base64 编码参数。 对于初学者导入 base64 然后使用它来编码您的 client_id 和您的 client_secret,您应该能够弄清楚如何从 Udemy 的 API 文档中获取这些内容,最终它应该看起来像这样:
import requests
import base64
client_id = <client_id you obtain from Udemy>
client_secret = <client_secret you obtain from Udemy>
client_id_secret = f"{client_id}:{client_secret}"
b64_client_id_secret = base64.encode(client_id_secret)
headers =
{
'Authorization': f'Basic {b64_client_id_secret}'
}