Django Dropbox BadInputException: Необходимо установить токен доступа OAuth2

Я создал приложение на Python, которое использует API dropbox для доступа к количеству файлов и папок в заданном каталоге. Я пытался разместить его на веб-портале, который мы с моим партнером создали на Django. Из-за того, что dropbox больше не использует постоянные ключи, план состоял в том, чтобы администратор заходил на веб-портал и вручную передавал новый ключ приложения, полученный с сайта консоли dropbox, и передавал его в приложение. Однако возникла проблема: когда я пытаюсь передать новый код маркера доступа через UI, Django выдает следующую ошибку:

BadInputException at /landBoxReport/
OAuth2 access token or refresh token or app key/secret must be set
Request Method: POST
Request URL:    http://localhost:7000/landBoxReport/
Django Version: 4.0.5
Exception Type: BadInputException
Exception Value:    
OAuth2 access token or refresh token or app key/secret must be set
Exception Location: C:\Users\username\AppData\Local\Programs\Python\Python310\lib\site-packages\dropbox\dropbox_client.py, line 189, in __init__
Python Executable:  C:\Users\username\AppData\Local\Programs\Python\Python310\python.exe
Python Version: 3.10.5

Вот остальная часть моего кода:

Для логики в моем views.py, которая вызывает ошибку

    form = LandBoxTokenForm(request.POST)
    if request.method == 'POST':
        token = request.GET.get('landToken')
        if token != 'None':
            manager = LandBoxManager(token)
            manager.dropbox_show_folders()
    return render(request, 'landBox_report.html', {'form': form})

Мой код Dropbox Python API:

class LandBoxManager():
    def __init__(self, accessToken):
        import dropbox
        from dropbox.exceptions import AuthError
        from numpy import isin
        self.useBox = dropbox
        self.dbAuthError = AuthError
        self.token = accessToken

    def dropbox_connect(self):
        try:
            dbx = self.useBox.Dropbox(self.token)
        except self.dbAuthError as e:
            print('Error connecting to Dropbox with access token: ' + str(e))
        return dbx

    def dropbox_show_folders(self):
        dbx = self.dropbox_connect()
        # Will be in root directory!
        landBoxReport = open("T:\landautomation\dropbox\dropboxReport.txt", "w")
        for entry in dbx.files_list_folder("").entries:
            landBoxReport.write("Marketer: " + entry.name + "\n") # Root folder
            landBoxReport.write("\tProvider\n")
            for subEntry in dbx.files_list_folder(entry.path_lower).entries:
                # Only print the subEntry name if it's a folder type, also print how many items are in the subfolder!
                if isinstance(subEntry, self.useBox.files.FolderMetadata):
                    # Getting the amount of items in each subfolder
                    fileCount = 0
                    foldersInside = 0
                    for subFolderFile in dbx.files_list_folder(subEntry.path_lower).entries:
                        if isinstance(subFolderFile, self.useBox.files.FileMetadata):
                            fileCount += 1
                        if isinstance(subFolderFile, self.useBox.files.FolderMetadata):
                            foldersInside += 1
                    landBoxReport.write("\t\t" + subEntry.name + ": " + str(fileCount) + " files, " + str(foldersInside) + " folders\n")
        landBoxReport.close()

Я не уверен, что это то, с чем мне придется работать, или мой код неверен - любая помощь или понимание будут признательны!

Вернуться на верх