使用Oauth2代码将Dropbox上传到“错误”文件夹

时间:2018-12-15 10:21:14

标签: python oauth-2.0 dropbox-api

我正在尝试使用python和Dropbox API将文件上传到共享文件夹。

我遇到的问题是我将目标文件名指定为:

'/<shared folder name>/uploaded.txt'

但是它上传到:

'Apps/<app name>/<shared folder name>/uploaded.txt'

这不是共享文件夹,我特别想使用共享文件夹。如何更改代码,以便将其上传到共享文件夹?

import webbrowser

from dropbox import Dropbox
from dropbox.files import WriteMode
from dropbox import DropboxOAuth2FlowNoRedirect

APP_KEY = '<my app key>'
APP_SECRET = '<my app secret>'
APP_TOKEN = '<my app token>'

def upload(dbx):
    local_file = '<path to local file>'
    remote_file = '/<shared folder name>/uploaded.txt'
    with open(local_file, 'rb') as f_upload:
        try:
            foo = dbx.files_upload(f_upload.read(), remote_file, 
                                   mode=WriteMode('overwrite'))
            print('done ...', foo)
        except:
            print('Upload error')

def get_dbx_with_auth_code():
    auth_flow = DropboxOAuth2FlowNoRedirect(APP_KEY, APP_SECRET)
    authorize_url = auth_flow.start()
    webbrowser.open(authorize_url)
    auth_code = input('Authorization code: ').strip()
    try:
        oauth_result = auth_flow.finish(auth_code)
    except:
        print('Token error')
        return None
    dbx = Dropbox(oauth_result.access_token)
    return dbx

if __name__ == '__main__':
    dbx = get_dbx_with_auth_code()
    upload(dbx)

1 个答案:

答案 0 :(得分:0)

如果您的代码正在上传到应用程序文件夹中(例如,如您所指示的,在'/Apps/<app name>'下),则意味着您使用的访问令牌适用于具有“应用程序文件夹”权限的应用程序。拥有此权限的应用程序只能在为其创建的特殊应用程序文件夹内运行。您可以找到more information on the different Dropbox API app permissions here

如果您需要在共享文件夹中进行操作,则需要register an app以获得“完全Dropbox”权限,然后切换到对该应用程序使用访问令牌。