401 Dropbox API未经授权

时间:2013-12-11 11:47:14

标签: python dropbox

我正在尝试构建一个能够在python中通过chunk下载文件块的python应用程序,我在整个应用程序中使用包dropbox-python,但是在按块下载文件块的情况下,包不处理此案。

所以我尝试使用dropbox.rest.RESTClient.request发出请求,并使用headers参数传递Range。 我正在使用dropbox.client.DropboxClient.request来检索我在Oauth1.0中构建请求所需的所有信息。

所以我最后得到的是以下网址:https://api-content.dropbox.com/1/files/dropbox/bigfile?oauth_token=(token)&oauth_consumer_key=(consumer_key)

当我尝试发送请求时,我获得了401 Unauthorized。 你知道我做错了吗?

def download_big_file(self, filename, outDir=None):

    fname = filename
    metadata = self.client.metadata(fname)
    size = metadata['bytes']
    url, params, headers = self.client.request("/files/dropbox/"+filename)
    url = url.replace("api", "api-content")
    url = url + "?oauth_token=" + params['oauth_token'] + "&oauth_consumer_key=" + params['oauth_consumer_key']

    if outDir:
        dst = os.path.join(outDir, fname)
else:
        dst = fname

    endchunk = self.chunked_file_size
    with open(fname, "wb") as fh:
        try:
            while endchunk < size:
                fh.write(dropbox.rest.RESTClient.request('GET', url, headers={"Range": "bytes="+str(endchunk-self.chunked_file_size)+"-"+str(endchunk)}))
            endchunk += self.chunked_file_size
        except Exception, e:
            print "ERROR: ", e

    return dst, metadata

1 个答案:

答案 0 :(得分:2)

是否有名为dropbox-python的图书馆?或者这只是dropboxofficial library from Dropbox

如果它是官方库,我认为这段代码应该可以使用(未​​经测试):

url, params, headers = self.client.request(path, {}, method='GET', content_server=True)
headers['Range'] = 'bytes=' + ...
f = self.client.rest_client.request("GET", url, headers=headers, raw_response=True)