#python #microsoft-graph-api #onedrive
Вопрос:
Я пытаюсь перечислить элементы внутри папок, используя библиотеку O365 с учетными данными клиента (с собственной идентификацией). Я настроил разрешения на чтение и запись файлов в Azure и могу получать результаты, если использую поток аутентификации от имени пользователя.
Поток аутентификации(работает, но требует взаимодействия):
from O365 import Account
credentials = (client,secret)
account = Account(credentials)
storage = account.storage()
if account.authenticate(scopes=['onedrive_all',('offline_access')]): #Once u get the token file with refresh token u can remove the if statement to avoid always asking user input
print('Authenticated!')
my_drive = storage.get_default_drive()
root_folder = my_drive.get_root_folder()
# iterate over the first 25 items on the root folder
for item in root_folder.get_items(limit=25):
if item.is_folder:
print(list(item.get_items(2))) # print the first two element on this folder.
Поток учетных данных — С собственной идентификацией приложения (не требует взаимодействия с пользователем, но не работает):
from O365 import Account
credentials = (client,secret)
account = Account(credentials, auth_flow_type='credentials', tenant_id=tenant)
storage = account.storage()
if account.authenticate():
print('Authenticated!')
my_drive = storage.get_default_drive()
root_folder = my_drive.get_root_folder()
# iterate over the first 25 items on the root folder
for item in root_folder.get_items(limit=25):
if item.is_folder:
print(list(item.get_items(2))) # print the first two element on this folder.
Как я могу заставить работать метод учетных данных клиента? В настоящее время я получаю пустой список, а также ошибки в других функциях, которые работают с первой техникой
Ответ №1:
Решен поток учетных данных с помощью
account = Account(credentials,auth_flow_type='credentials',
tenant_id=tenant,main_resource=myemail)