使用python-oauth2进行文件上传

时间:2011-08-03 09:49:51

标签: python file-upload oauth

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)。建议?

2 个答案:

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

道歉我还没机会测试这个。