Загрузка файлов из SharePoint в Python - PullRequest
0 голосов
/ 23 апреля 2020

Поэтому я пытаюсь загрузить файлы, расположенные в (под) каталогах в Python, используя этот бит кода:

import json

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.runtime.client_request import ClientRequest
from office365.runtime.utilities.request_options import RequestOptions

ctx_auth = AuthenticationContext(url)
if ctx_auth.acquire_token_for_user(username, password):
  request = ClientRequest(ctx_auth)
  options = RequestOptions("{0}/_api/web/".format(url))
  options.set_header('Accept', 'application/json')
  options.set_header('Content-Type', 'application/json')
  data = request.execute_request_direct(options)
  s = json.loads(data.content)
  web_title = s['Title']
  print("Web title: " + web_title)
else:
  print(ctx_auth.get_last_error())

Но я получаю следующую ошибку:

Невозможно получить двоичный токен безопасности для от https://login.microsoftonline.com/extSTS.srf Произошла ошибка при получении аутентификационных файлов cookie из https: /DOMAIN.website/siteDocuments/Document/example/

Теперь Microsoft link сообщает, что конечная точка принимает только запросы POST. Получен запрос GET.

Есть ли обходной путь для этого? Спасибо.

1 Ответ

0 голосов
/ 24 апреля 2020

Я проверял этот код на своем SP онлайн . Пожалуйста, измените ваш код, как показано ниже:

import json

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.runtime.client_request import ClientRequest
from office365.runtime.utilities.request_options import RequestOptions

tenant_url= "https://{tenant}.sharepoint.com"
ctx_auth = AuthenticationContext(tenant_url)

site_url="https://{tenant}.sharepoint.com/sites/{yoursite}"

if ctx_auth.acquire_token_for_user("username","password"):
  request = ClientRequest(ctx_auth)
  options = RequestOptions("{0}/_api/web/".format(site_url))
  options.set_header('Accept', 'application/json')
  options.set_header('Content-Type', 'application/json')
  data = request.execute_request_direct(options)
  s = json.loads(data.content)
  web_title = s['Title']
  print("Web title: " + web_title)
else:
  print(ctx_auth.get_last_error())

Результат: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...