Office365-rest-python-client: «TypeError: невозможно объединить объекты 'str' и 'NoneType'» при запросе на получение файла.

Созданный на 12 июн. 2017  ·  14Комментарии  ·  Источник: vgrem/Office365-REST-Python-Client

Я пытаюсь загрузить файл, доступный (через браузер) по этому URL-адресу:
https://test.sharepoint.com/sites/team/team documents / subfolder / document.docx

Я использую объект ClientRequest со следующим кодом:

url = "https://test.sharepoint.com/sites/team"
username="[email protected]"
password="pass"
ctxAuth = AuthenticationContext(url)
if ctxAuth.acquire_token_for_user(username, password):
    print 'authentication successful, proceeding...'
    request = ClientRequest(ctxAuth)
    requestUrl="{0}/_api/web/getfilebyserverrelativeurl('team documents/subfolder/document.docx')"
    options=RequestOptions(requestUrl.format(url))
    data = request.execute_query_direct(options)

При запуске я получаю следующую трассировку:

$ python test.py
No handlers could be found for logger "client.office365.runtime.auth.saml_token_provider.SamlTokenProvider.process_service_token_response"
authentication successful, proceeding...
Traceback (most recent call last):
  File "test.py", line 14, in <module>
    data = request.execute_query_direct(options)
  File "/usr/lib/python2.7/site-packages/client/office365/runtime/client_request.py", line 77, in execute_query_direct
    self.context.authenticate_request(request_options)
  File "/usr/lib/python2.7/site-packages/client/office365/runtime/auth/authentication_context.py", line 20, in authenticate_request
    request_options.set_header('Cookie', self.provider.get_authentication_cookie())
  File "/usr/lib/python2.7/site-packages/client/office365/runtime/auth/saml_token_provider.py", line 65, in get_authentication_cookie
    return 'FedAuth=' + self.FedAuth + '; rtFa=' + self.rtFa
TypeError: cannot concatenate 'str' and 'NoneType' objects

Что-то не так с тем, как я использую модуль?

Самый полезный комментарий

У меня была аналогичная проблема, потому что наш экземпляр SharePoint работает за прокси-сервером. Мне пришлось создать подкласс SamlTokenProvider чтобы переопределить URL-адрес входа ( self.sts ) и имена файлов cookie. Я думаю, проблема в том, что во время инициализации код не проверяет результат acquire_authentication_cookie поэтому, если аутентификация не удалась, вы не услышите об этом, пока не будут использованы файлы cookie.

Все 14 Комментарий

У меня была аналогичная проблема, потому что наш экземпляр SharePoint работает за прокси-сервером. Мне пришлось создать подкласс SamlTokenProvider чтобы переопределить URL-адрес входа ( self.sts ) и имена файлов cookie. Я думаю, проблема в том, что во время инициализации код не проверяет результат acquire_authentication_cookie поэтому, если аутентификация не удалась, вы не услышите об этом, пока не будут использованы файлы cookie.

Я столкнулся с той же проблемой. Кажется, что сбои аутентификации не обрабатываются исключениями. Он всплывает только при запросе файлов cookie. Проверьте свои учетные данные

Та же проблема. Учетные данные проверены, но проблема не устранена. Есть другие мысли? Спасибо!

В итоге я использовал OAuth2Session, чтобы получить аутентификацию oauth2 и получить данные из графического API. прошло какое-то время, и я уже не помню точных деталей.

Спасибо, проверю.

Привет, у меня такая же проблема, но в моем случае я думаю, это потому, что у меня настроена точка доступа с помощью метода FormAuthentication. Ни в коем случае это не будет работать, пока не будет реализован надлежащий поставщик токенов.

Я тоже сталкиваюсь с этой проблемой, но только если я использую учетную запись outlook.com. Я надеюсь, что кто-нибудь сможет объяснить, что происходит за кулисами, и, возможно, предложить решение. Вот краткое объяснение:

1) Наш сайт SharePoint находится в облаке (https://mn365.sharepoint.com)
2) Когда я подключаюсь к сайту, используя свои учетные данные штата Миннесота, он подключается нормально.
3) Но поскольку я не хочу, чтобы мои собственные учетные данные были встроены в мое приложение, я создал «служебную учетную запись» по типу «

Чем отличается аутентификация между использованием адреса outlook.com и адреса, выданного моей организацией (в данном случае firstName. [email protected]?

Здесь та же проблема. Мы используем AD FS для аутентификации. До сих пор я не нашел способа получить какую-либо информацию с нашего онлайн-сервера sharepoint. Я пробовал много библиотек, но у меня ничего не работало.

У меня была такая же ошибка, потому что sharepoint перенаправлял для аутентификации на локальную STS / ADFS.

Мы создали нового пользователя O365 непосредственно в O365, чтобы он не использовал перенаправление на локальную службу STS / ADFS. Это устранило ошибку 👍

Я перешел на sharepy, который запускает ootb и покрывает мои условия

То же самое:
Не удалось найти обработчики для регистратора "office365.runtime.auth.saml_token_provider.SamlTokenProvider._process_service_token_response"

Удачи от других?

Возможно, следующее поможет сузить круг вопросов.

Я могу успешно пройти аутентификацию по общему URL-адресу sharepoint, но не по URL-адресу, который указывает на определенный командный канал. Следующий фрагмент кода работает нормально:

url = "https://COMPANYNAME.sharepoint.com/"
username=raw_input("username: ")
password=raw_input("password: ")
ctx_auth = AuthenticationContext(url=url)
if ctx_auth.acquire_token_for_user(username=username, password=password):

Но когда я заменяю URL-адрес на:

url = "https://COMPANYNAME.sharepoint.com/sites/TEAMSCHANNEL/"

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

No handlers could be found for logger "office365.runtime.auth.saml_token_provider.SamlTokenProvider.acquire_authentication_cookie"

Любой обходной путь приветствуется - в моем браузере я вижу их обоих нормально.

Мы нашли обходной путь для вышеуказанного варианта использования. Просто используйте базовый URL для получения AuthenticationContext . Новые объекты ClientContext могут быть созданы с использованием разных URL-адресов.

base_url = "https://COMPANYNAME.sharepoint.com/"
ctx_auth = AuthenticationContext(url=base_url)
if not ctx_auth.acquire_token_for_user(username=user, password=password):
    sys.exit('Error in getting token - quitting')
url = base_url + "sites/TEAMSCHANNEL/"
ctx = ClientContext(url, ctx_auth)
..
..

Привет, ребята!

С момента сообщения об этой проблеме до настоящего времени были внесены следующие улучшения / исправления ошибок в отношении _поддержки федеративной аутентификации на основе SAML с SharePoint Online_:

  • # 210 - Невозможно подключиться к SharePoint (ошибка Acquire_authentication_cookie при федерации)
  • # 170 - Произошла ошибка при получении токена: AADSTS50126: Ошибка проверки учетных данных из-за неверного имени пользователя или пароля
  • # 85 - Использование Office-365-REST с ADFS
  • # 84 - Сайты с локальным STS не аутентифицируются (AADSTS70002)

Таким образом, указанная ошибка больше не должна возникать, просто убедитесь, что вы загрузили _latest_ версию ( 2.1.10.1 или выше).

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

parthrawal picture parthrawal  ·  24Комментарии

ahulist picture ahulist  ·  5Комментарии

Mark531 picture Mark531  ·  11Комментарии

Cesaaar picture Cesaaar  ·  7Комментарии

pobs93 picture pobs93  ·  13Комментарии