Загрузка Dropbox с кодом Oauth2 загружается в «неправильную» папку - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь загрузить файл в общую папку, используя python и API Dropbox.

Проблема, с которой я столкнулся, заключается в том, что я указал целевое имя файла как:

'/<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 голосов
/ 17 декабря 2018

Если ваш код загружается в папку приложения (например, под '/Apps/<app name>', как вы указали), это означает, что используемый вами токен доступа предназначен для приложения, имеющего разрешение «папка приложения».Приложения с этим разрешением могут работать только в специальной папке приложений, созданной для них.Вы можете найти дополнительную информацию о различных разрешениях приложения Dropbox API здесь .

Если вам нужно работать в общих папках, вам нужно зарегистрировать приложение длявместо этого введите полное разрешение Dropbox и переключитесь на использование токена доступа для этого приложения.

...