Get请求非常简单:
def build_request(url, method='GET'):
params = {
'oauth_version': "1.0",
'oauth_nonce': oauth2.generate_nonce(),
'oauth_timestamp': int(time.time())
}
consumer = oauth2.Consumer(key='****',secret='******')
params['oauth_consumer_key'] = consumer.key
req = oauth2.Request(method=method, url=url, parameters=params)
signature_method = oauth2.SignatureMethod_HMAC_SHA1()
req.sign_request(signature_method, consumer, None)
return req
但是现在,我们想要用文件进行POST。 (我们正在使用库python-oauth2)。建议?
答案 0 :(得分:4)
问题是oauth不应签署多部分/后期数据,但仍需要签署其他参数。我解决它的方法是使用python-oauth2签署非文件参数,然后用urllib2手动发送请求。
这是一个example script。见第126-173行。
答案 1 :(得分:1)
从阅读源代码看,请求采用一种方法来声明要使用的HTTP请求。
只需将您的请求更改为
即可req = oauth2.Request(method='POST', url=url, parameters=params)
https://github.com/simplegeo/python-oauth2/blob/master/oauth2/init.py#L342了解更多信息
这可能会解决您的问题,因为文件上传您可能可以使用提供内容的标题来查看:
https://github.com/simplegeo/python-oauth2/blob/master/oauth2/init.py#L646
道歉我还没机会测试这个。