如何使用python中的请求模块使用Udemy api

时间:2021-01-03 12:51:59

标签: python api oauth python-requests

我正在尝试从 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/

预先感谢您的帮助!

1 个答案:

答案 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}'
                  }