Я пытаюсь настроить приложение, используя Dropbox в качестве средства обмена файлами для пользователей.
Я могу загрузить файл с помощью токена приложения, но при попытке использовать код авторизации файлне загружается;приложение не сообщает об ошибке.
Следующий код содержит оба метода:
dbx = get_dbx_with_token()
работает, а
dbx = get_dbx_with_auth_code()
- нет.Любая помощь приветствуется.
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 = '<remote file name>'
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
def get_dbx_with_token():
dbx = Dropbox(APP_TOKEN)
return dbx
if __name__ == '__main__':
dbx = get_dbx_with_token()
#dbx = get_dbx_with_auth_code()
upload(dbx)
Функция dbx.files_upload (foo) возвращает:
FileMetadata(
name='uploaded.txt',
id='id:<my_id>',
client_modified=datetime.datetime(2018, 12, 13, 18, 24, 15),
server_modified=datetime.datetime(2018, 12, 13, 18, 24, 15),
rev='013000000010ede3870', size=6, path_lower='/upload test/uploaded.txt',
path_display='/upload test/uploaded.txt',
parent_shared_folder_id=None,
media_info=None,
symlink_info=None,
sharing_info=None,
property_groups=None,
has_explicit_shared_members=None, content_hash='<content hash>')
FileMetadata для get_dbx_with_token отличается:
parent_shared_folder_id='1234567890',
sharing_info=FileSharingInfo(read_only=False,
parent_shared_folder_id='1234567890',
modified_by='dbid:AAAyXwp1wvSzPzmqzCJ9SWFuxhc')
(Кстатипапка, в которую я загружаю, является общей папкой, принадлежащей другому пользователю)
Причина, по которой я думаю, что она не работает, заключается в том, что она не отображается в папке Dropbox моего браузера, если я использую get_dbx_with_auth_code (), ноэто происходит, если я использую get_dbx_with_token ().