В настоящее время используется Office365-REST-Python-Client==2.3.0.1
Когда я запускаю следующий код:
def upload_to_sharepoint():
url = 'https://tenant.sharepoint.com/sites/sitename'
credentials = {
'client_id': os.environ.get('client_id'),
'client_secret': os.environ.get('client_secret'),
}
context_auth = AuthenticationContext(url=url)
context_auth.acquire_token_for_app(client_id=credentials['client_id'],
client_secret=credentials['client_secret'])
ctx = ClientContext(url, context_auth)
web = ctx.web
ctx.load(web)
file_name = f"vat check {datetime.now().strftime('%Y-%m-%d')}"
path = os.path.join("/tmp", file_name)
with open(path, 'rb') as content_file:
file_content = content_file.read()
list_title = "VAT Check"
target_folder = ctx.web.lists.get_by_title(list_title).rootFolder
# name = os.path.basename(path)
target_file = target_folder.upload_file(file_name, file_content)
ctx.execute_query()
print(f"File url: {target_file.serverRelativeUrl}")
Я получаю следующую ошибку: это похоже на внутреннюю ошибку, а не на аутентификацию, или я что-то упустил?
AttributeError: 'ClientContext' object has no attribute '_auth_context'
Это было быстро, спасибо @vgrem, который
Привет,
спасибо, что поймали! Оказывается, экземпляр AuthenticationContext
потерялся при переходе в ClientContext
.
С другой стороны, поскольку AuthenticationContext.acquire_token_for_app
настоящее время считается _нерекомендуемым_, другим вариантом (_рекомендовано_) будет переключение с:
context_auth = AuthenticationContext(url=url)
context_auth.acquire_token_for_app(client_id=credentials['client_id'],
client_secret=credentials['client_secret'])
ctx = ClientContext(url, context_auth)
в
credentials = ClientCredential(credentials['client_id'], credentials['client_secret'])
ctx = ClientContext(settings['url']).with_credentials(credentials)
у меня все еще возникает эта проблема.
Что может быть причиной
Вероятно, вам нужно обновить свой пакет: pip install --upgrade Office365-REST-Python-Client
@spurthikaribasaiah
Привет, @erfannariman и @vgrem!
Я пробовал с помощью вышеуказанной команды. У меня все еще та же проблема.
Пожалуйста, найдите фрагмент кода ниже. Я использую учетные данные пользователя
pip install --upgrade pip
pip установить Office365-REST-Python-Client
pip install --upgrade Office365-REST-Python-Client
из office365.runtime.auth.authentication_context импорт AuthenticationContext
из office365.sharepoint.client_context импорт ClientContext
ctx_auth = AuthenticationContext (Sharepoint_SiteUrl)
ctx_auth.acquire_token_for_user (пользователь, пароль)
ctx = ClientContext (Sharepoint_SiteUrl, ctx_auth)
web = ctx.web
ctx.load (Интернет)
ctx.execute_query ()
print («Аутентификация прошла успешно»)