Office365-rest-python-client: Невозможно использовать его для Python 3

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

Есть ли проблема с python 3?

bug enhancement

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

@ vic-by Недавняя фиксация устраняет проблему: https://github.com/vgrem/Office365-REST-Python-Client/commit/90731f
Обратите внимание, что в настоящее время эта фиксация еще не отправлена ​​на pypi. Так что если вы сделаете pip install Office365-REST-Python-Client вы не получите этот код. Установка из git будет: pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

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

Привет,

он должен быть совместим с обеими версиями Python: 2 и 3, но позвольте мне это проверить. Вернусь к вам.

Привет Спасибо за быстрый ответ.
Ниже я получаю ошибку
`------------------------------------------------- --------------------------
ModuleNotFoundError Traceback (последний вызов последним)
в()
1 импорт json
2
----> 3 из office365.runtime.auth.authentication_context импорт AuthenticationContext
4 из office365.runtime.client_request импорт ClientRequest
5 из office365.runtime.utilities.request_options import RequestOptions

ModuleNotFoundError: нет модуля с именем office365.

И да, у меня есть pip install moduel :)

Привет, я написал код для получения информации, используя только модуль запросов. и я могу успешно получить файлы cookie FedAuth и rtFa. Однако при попытке получить siteUsers возникает ошибка Запрещено.
Не могли бы вы помочь в этом?
`запросы на импорт

url = " https://login.microsoftonline.com/extSTS.srf "
заголовки = {'content-type': 'application / json'}
TopLevelUrl = ' https://XXXX.sharepoint.com '
путь = 'C: \ PSR \ PythonFiles \ SharePointOnlineXML.txt'

filecontent = open (путь, 'r')
SharepointOnlineAuth = filecontent.read ()
SharepointOnlineAuth = SharepointOnlineAuth.format ('[email protected] ',' Пароль ', TopLevelUrl)

Давайте сделаем вызов, чтобы получить токен, чтобы получить файлы cookie.

response = requests.post (URL, данные = SharepointOnlineAuth, заголовки = заголовки)
s = str (response.content)
Начало = [позиция для позиции в диапазоне (len (s)), если s [позиция:]. Начинается с ('')] [0]
Finish = [pos для позиции в диапазоне (len (s)), если s [pos:]. Начинается с ('
')] [0]
LoginResponse = s [Начало + 40: Готово]

Теперь давайте возьмем файлы cookie, чтобы позвонить в SharePoint Online.

url = TopLevelUrl + '/ _ forms / default.aspx? wa = wsignin1.0'
заголовки = {'content-type': 'application / x-www-form-urlencoded'}
response = requests.post (URL, данные = LoginResponse, заголовки = заголовки)

Вызов Sharepoint REST Api с использованием файлов cookie, полученных из вышеуказанного Вызов

url = TopLevelUrl + '/ _ api / web / siteusers'
печать (URL)
_Fedauth = 'FedAuth = {}'. Формат (response.cookies ['FedAuth'])
_rtFa = 'rtFa = {}'. формат (response.cookies ['rtFa'])
_FinalDict = {'Cookie': _ Fedauth + ',' + _ rtFa}

заголовки = {'Content-Type': 'application / x-www-form-urlencoded',
'User-Agent': 'Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, например, Gecko) Chrome / 59.0.3071.115 Safari / 537.36'}
headers.update (_FinalDict)

печать (заголовки)

response = requests.get (URL, заголовки = заголовки)
печать (ответ) `

получение ошибки на python3.4:

_Traceback (последний вызов последний):
Файл auth_sharepoint_online365.py, строка 2, в
из office365.runtime.auth.authentication_context импорт AuthenticationContext
Файл "authentication_context.py", строка 2, в
из office365.runtime.auth.saml_token_provider импортировать SamlTokenProvider
Файл "saml_token_provider.py", строка 2, в
импорт urlparse
ImportError: нет модуля с именем urlparse _

Согласно https://docs.python.org/2/library/urlparse.html :

Модуль urlparse переименован в urllib.parse в Python 3.

Попробуйте этот https://github.com/parthrawal/Python.O365. Я написал файл .py, который может подключаться к SharePoint Online, и даже имеет некоторые методы для получения данных из списков в формате словаря. Дайте мне знать, если вам понадобится помощь.

@ vic-by Недавняя фиксация устраняет проблему: https://github.com/vgrem/Office365-REST-Python-Client/commit/90731f
Обратите внимание, что в настоящее время эта фиксация еще не отправлена ​​на pypi. Так что если вы сделаете pip install Office365-REST-Python-Client вы не получите этот код. Установка из git будет: pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

Еще нужно поработать, чтобы получить библиотеку с Python 3.

Я столкнулся с проблемой кодирования при запуске библиотеки под python 3. Это произошло при выполнении list.properties, но я уверен, что проблема носит постоянный характер.

    ctx = ClientContext(url, ctx_auth)
    web = ctx.web
    ctx.load(web)
    ctx.execute_query()
    lists = web.lists
    ctx.load(lists)
    ctx.execute_query()
    lists[0].properties
 in <module>()
---> 16         lists[0].properties

c:\python\python35\lib\encodings\cp850.py in encode(self, input, final)
     17 class IncrementalEncoder(codecs.IncrementalEncoder):
     18     def encode(self, input, final=False):
---> 19         return codecs.charmap_encode(input,self.errors,encoding_map)[0]
     20
     21 class IncrementalDecoder(codecs.IncrementalDecoder):

UnicodeEncodeError: 'charmap' codec can't encode character '\u2019' in position 11052: character maps to <undefined>

У меня такая же проблема с Python 3: «ModuleNotFoundError: нет модуля с именем 'urlparse'»
Тестирование файла SharePointOnline.py: Ошибка аутентификации -> Введенные и сохраненные пароли не совпадают.

Вы пробовали эту ссылку https://github.com/parthrawal/Python.O365, убедитесь, что вы используете учетную запись службы для того же

да. Скопируйте / вставьте код внизу:

if __name__ == "__main__":
    UserName = "[email protected]"
    # UserName = "[email protected]"
    Password = "my_password"
    TopLevelUrl = "https://company.sharepoint.com/"
    SPOnlineHeaders(UserName, Password, TopLevelUrl)

Возвращается следующая ошибка:

....
IndexError: list index out of range

Чтобы получить более подробную информацию об ошибке, я вставил в SPOnlineHeaders следующий код (печать (и)):

response = requests.post(url, data=SharepointOnlineAuth, headers=headers)
s = str(response.content)
print(s)

Ответ:
... wst: FailedAuthentication ... Введенный и сохраненный пароли не совпадают ...

Я надеюсь, что вы используете сервисный аккаунт

Это правильно. Я использую сервисный аккаунт.

Пароль правильный? не могли бы вы дважды проверить это. потому что я попытался запустить код, он работает нормально. Но когда я ввел неправильный пароль, он выдает ошибку «IndexError: индекс списка вне допустимого диапазона».

да. Пароль правильный. Вот что происходит при ручном входе в систему.

Пишу ссылку в браузер: https://company.sharepoint.com/

При нажатии Enter меня перенаправляют на страницу входа: https://login.microsoftonline.com/575...71a/oauth2/authorize?client_id=...&response_mode=form_post&response_type=code%20id_token&resource=...&scope=openid&nonce = .... & redirect_uri = https :% 2F% 2Fcompany.sharepoint.com% 2F_forms% 2Fdefault.aspx & wsucxt = 1 & client-request-id = ....

После нажатия кнопки ОК на странице входа я увидел две быстрые ссылки ...
Первый: https://sts.company.com/adfs/ls/wia?client-request-id=...&wa=wsignin1.0&wtrealm=urn%3afederation%3aMicrosoftOnline&wctx=LoginOptions%3D3%26estsredirect%3d2%26estsrequest%. ... & cbcxt = & username = myemail% company.com & mkt = & lc =
... А также ...
Во-вторых: https: //login.microsoftonline.com/login.srf? Client-request-id = ...

И наконец останавливаемся на нужной странице:
https://company.sharepoint.com/

Я запустил этот код и обнаружил, что он выдает ошибку 403 где-то в коде.

response = requests.post (URL, данные = SharepointOnlineAuth, заголовки = заголовки)
s = str (response.content)
печать (и)
"b'403 ЗАПРЕЩЕНО"

Я забыл использовать конечную точку

url = " https://login.microsoftonline.com/extSTS.srf "

urlpar

У меня такая же проблема с urlparse (Python 3.6.5 :: Anaconda, Inc.). Это было решено путем изменения saml_token_provider.py: from urllib.parse import urlparse [...] url = urlparse(self.url)

Затем мне не хватало сети, которую я установил с помощью: pip install lpthw.web . Однако, похоже, есть проблема, так как теперь у меня возникает следующая проблема:
from web import Web File "C:\ProgramData\Anaconda3\lib\site-packages\web\__init__.py", line 14, in <module> import utils, db, net, wsgi, http, webapi, httpserver, debugerror ModuleNotFoundError: No module named 'utils'

Установите модуль utils в anaconda.

Установите модуль utils в anaconda.

Спасибо. После установки утилит мне также нужно было установить db ... может быть полезно иметь в пакете проверку requirements.txt?

Что происходит сейчас, так это то, что операторы печати не подходят для python3:
print "var", var ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("var", var)?

Пожалуйста, пройдите по следующей ссылке:
https://docs.python.org/3.0/whatsnew/3.0.html

@viogp Спасибо, что разместили здесь свой прогресс, было бы хорошо, если бы мы могли сгладить некоторые из этих изгибов. В настоящее время эта библиотека используется в py 2.7 и хотелось бы, чтобы эти рабочие процессы были переведены на py 3.

Привет. У меня проблема с использованием этой библиотеки.
Ошибка при получении токена: AADSTS90023: недопустимый запрос STS.
Произошла ошибка при получении файлов cookie аутентификации
return 'FedAuth =' + self.FedAuth + '; rtFa = '+ self.rtFa
TypeError: можно только объединить str (не "NoneType") с str
Кто-нибудь может мне помочь?

Поскольку библиотека официально совместима со средами выполнения как Python 2, так и Python 3, предлагаем закрыть эту проблему.

Привет,

Я получаю эту ошибку «ModuleNotFoundError: Нет модуля с именем 'office365.sharepoint.client_context'», когда я использую среду проекта в pycharm во время работы. НО он будет работать нормально, если я использую системную среду Python. Такое же поведение, я использую Python 3.6 или 3.7.

Пожалуйста помоги!
Спасибо.

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