Python 使用cURL/pycurl(oauth 2.0)处理http 100响应

Python 使用cURL/pycurl(oauth 2.0)处理http 100响应,python,curl,oauth-2.0,pycurl,Python,Curl,Oauth 2.0,Pycurl,我正在尝试用Python/pycurl验证一个在stocktwits()上发布的bot。据我所知,首先我需要通过oauth/authorize,请求授权应用程序使用Stocktwits用户数据,这将返回授权代码。然后我需要通过oauth/token确认权限,这将发回一个可用于发布stocktwits的访问令牌 我遇到的问题是,在我向auth/authorize发出post请求后,返回的响应是 Host: api.stocktwits.com Authorization: Basic bmljay

我正在尝试用Python/pycurl验证一个在stocktwits()上发布的bot。据我所知,首先我需要通过
oauth/authorize
,请求授权应用程序使用Stocktwits用户数据,这将返回授权代码。然后我需要通过
oauth/token
确认权限,这将发回一个可用于发布stocktwits的访问令牌

我遇到的问题是,在我向
auth/authorize
发出post请求后,返回的响应是

Host: api.stocktwits.com
Authorization: Basic bmljay5vc2hpbm92QGdtYWlsLmNvbTp6YWRuaWsxMg==
User-Agent: PycURL/7.43.0.2 libcurl/7.60.0 OpenSSL/1.1.0h zlib/1.2.11 c- 
ares/1.14.0 WinIDN libssh2/1.8.0 nghttp2/1.32.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

< HTTP/1.1 100 Continue

我猜您需要使用
POSTFIELDS
READFUNCTION
来提供post数据,看起来您没有为请求主体配置任何内容。看


使用
pycurl.POST
是一个常见的错误,通常应该使用
POSTFIELDS

在上面的
Authorization
标题中,您的用户名:password base64编码(基本上是明文),如果您忘记修改它,我建议删除这个问题,重新创建一个没有原始值的新问题
def get_auth_token:
    auth_data = ""
    c = pycurl.Curl()
    c.setopt(c.CAINFO, self.CA_CERTS)
    c.setopt(pycurl.POST, 1)
    c.setopt(c.URL, uri_to_ouath_authorize_call)
    c.setopt(c.FOLLOWLOCATION, True)
    c.setopt(c.WRITEDATA, auth_data)
    c.setopt(c.USERPWD, 'bot_account_username:password')