Office365-rest-python-client: Impossible de l'utiliser pour Python 3

Créé le 4 juil. 2017  ·  24Commentaires  ·  Source: vgrem/Office365-REST-Python-Client

Y a-t-il un problème avec python 3 ?

bug enhancement

Commentaire le plus utile

@vic-by Un commit récent corrige le problème : https://github.com/vgrem/Office365-REST-Python-Client/commit/90731f
Notez qu'à l'heure actuelle, ce commit n'a pas encore été poussé sur pypi. Donc, si vous faites un pip install Office365-REST-Python-Client vous n'obtiendrez pas ce code. L'installation depuis git : pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

Tous les 24 commentaires

Bonjour,

il devrait être compatible avec les deux versions de Python : 2 et 3, mais permettez-moi de le vérifier. Nous vous contacterons.

Salut Merci pour la réponse rapide.
Ci-dessous l'erreur que j'obtiens
`------------------------------------------------- --------------------------
ModuleNotFoundError Traceback (appel le plus récent en dernier)
dans()
1 importation json
2
----> 3 depuis office365.runtime.auth.authentication_context importer AuthenticationContext
4 depuis office365.runtime.client_request importer ClientRequest
5 depuis office365.runtime.utilities.request_options importer RequestOptions

ModuleNotFoundError : aucun module nommé 'office365'`

Et oui, j'ai pip installer le module :)

Salut, j'ai écrit du code pour obtenir les informations en utilisant uniquement le module Requests. et je peux obtenir les cookies FedAuth et rtFa avec succès. Cependant, il renvoie une erreur Forbidden lorsque j'essaie d'obtenir le siteUsers.
Pouvez-vous s'il vous plaît aider?
`demandes d'importation

url=" https://login.microsoftonline.com/extSTS.srf "
headers = {'content-type': 'application/json'}
TopLevelUrl=' https://XXXX.sharepoint.com '
path='C:\PSR\PythonFiles\SharePointOnlineXML.txt'

contenu du fichier = open(chemin,'r')
SharepointOnlineAuth = filecontent.read()
SharepointOnlineAuth=SharepointOnlineAuth.format('[email protected]','Password',TopLevelUrl)

Faisons appel pour obtenir le jeton afin d'obtenir les cookies

réponse=requests.post(url,data=SharepointOnlineAuth,headers=headers)
s=str(réponse.contenu)
Start = [pos for pos in range(len(s)) if s[pos:].startswith('')][0]
Finish= [pos for pos in range(len(s)) if s[pos:].startswith('
')][0]
LoginResponse=s[Start+40:Finish]

Maintenant, récupérons les cookies pour faire un appel à SharePoint Online

url=TopLevelUrl+'/_forms/default.aspx?wa=wsignin1.0'
headers = {'content-type': 'application/x-www-form-urlencoded'}
response=requests.post(url,data=LoginResponse,headers=headers)

Appeler l'API REST Sharepoint à l'aide des cookies obtenus ci-dessus Appeler

url=TopLevelUrl+'/_api/web/siteusers'
imprimer (url)
_Fedauth='FedAuth={}'.format(response.cookies['FedAuth'])
_rtFa='rtFa={}'.format(réponse.cookies['rtFa'])
_FinalDict={'Cookie':_Fedauth+','+_rtFa}

headers = {'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent' :'Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/59.0.3071.115 Safari/537.36'}
headers.update(_FinalDict)

imprimer (en-têtes)

réponse=requests.get(url,headers=headers)
imprimer (réponse)`

obtenir une erreur sur python3.4 :

_Traceback (appel le plus récent en dernier) :
Fichier "auth_sharepoint_online365.py", ligne 2, dans
depuis office365.runtime.auth.authentication_context importer AuthenticationContext
Fichier "authentication_context.py", ligne 2, dans
depuis office365.runtime.auth.saml_token_provider importer SamlTokenProvider
Fichier "saml_token_provider.py", ligne 2, dans
importer l'analyse d'URL
ImportError : aucun module nommé ' urlparse '_

Selon https://docs.python.org/2/library/urlparse.html :

Le module urlparse est renommé en urllib.parse dans Python 3.

Essayez ceci https://github.com/parthrawal/Python.O365 J'ai écrit un fichier .py qui peut se connecter à SharePoint Online et a même quelques méthodes pour obtenir les données des listes au format dictionnaire. Faites-moi savoir si vous avez besoin d'aide.

@vic-by Un commit récent corrige le problème : https://github.com/vgrem/Office365-REST-Python-Client/commit/90731f
Notez qu'à l'heure actuelle, ce commit n'a pas encore été poussé sur pypi. Donc, si vous faites un pip install Office365-REST-Python-Client vous n'obtiendrez pas ce code. L'installation depuis git : pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

Il reste encore du travail à faire pour obtenir la bibliothèque vraiment avec python 3.

J'ai rencontré un problème d'encodage lors de l'exécution de la bibliothèque sous python 3. Cela s'est produit lors de l'exécution d'un list.properties mais je suis sûr que le problème est persistant.

    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>

J'ai le même problème avec Python 3: "ModuleNotFoundError: No module named 'urlparse'"
Test du fichier SharePointOnline.py : échec d'authentification -> Les mots de passe saisis et stockés ne correspondent pas.

Avez-vous essayé ce lien https://github.com/parthrawal/Python.O365 assurez-vous d'utiliser le compte de service pour le même

Oui. Copiez/collez le code, en bas :

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

L'erreur suivante est renvoyée :

....
IndexError: list index out of range

Pour obtenir plus de détails sur l'erreur, j'ai inséré, sur SPOnlineHeaders, le code suivant (print(s)):

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

Réponse:
... wst:FailedAuthentication... Les mots de passe saisis et enregistrés ne correspondent pas...

J'espère que ce que vous utilisez est un compte de service

C'est exact. J'utilise le compte de service.

Le mot de passe est-il correct ? pouvez-vous s'il vous plaît vérifier. car j'ai essayé d'exécuter le code, cela fonctionne bien. Mais lorsque j'ai entré un mauvais mot de passe, l'erreur "IndexError: list index out of range" s'affiche.

Oui. Le mot de passe est correct. C'est ce qui se passe lors d'une connexion manuelle.

J'écris le lien dans le navigateur : https://company.sharepoint.com/

Lorsque vous appuyez sur Entrée, je suis redirigé vers la page de connexion : 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=....

Après avoir appuyé sur le bouton ok sur la page de connexion, j'ai vu deux liens rapides...
Premièrement : 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=
... Et ...
Deuxièmement : https://login.microsoftonline.com/login.srf?client-request-id=...

Et s'arrête enfin à la page requise :
https://entreprise.sharepoint.com/

J'exécute ce code et constate qu'il génère une erreur 403 quelque part dans le code.

réponse = request.post(url,data=SharepointOnlineAuth,headers=headers)
s = str(réponse.contenu)
impression(s)
"b'403 INTERDIT'"

J'ai oublié d'utiliser le point de terminaison

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

urlpar

J'ai le même problème avec urlparse (Python 3.6.5 :: Anaconda, Inc.). Cela a été résolu en modifiant saml_token_provider.py : from urllib.parse import urlparse [...] url = urlparse(self.url)

Ensuite, il me manquait le Web, avec lequel je l'ai installé : pip install lpthw.web . Cependant, il semble y avoir un problème, car maintenant j'obtiens le problème suivant:
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'

Installez le module utils dans anaconda.

Installez le module utils dans anaconda.

Merci. Après avoir installé les utilitaires, j'avais également besoin d'installer db... il pourrait être utile d'avoir un fichier requirements.txt dans le package ?

Ce qui se passe maintenant, c'est que les instructions print ne sont pas adéquates pour python3 :
print "var", var ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("var", var)?

Veuillez passer par le lien suivant :
https://docs.python.org/3.0/whatsnew/3.0.html

@viogp Merci d'avoir publié vos progrès ici, ce serait bien si nous

Salut. J'ai un problème avec cette bibliothèque.
Une erreur s'est produite lors de la récupération du jeton : AADSTS90023 : demande STS non valide.
Une erreur s'est produite lors de la récupération des cookies d'authentification
return 'FedAuth=' + self.FedAuth + '; rtFa=' + self.rtFa
TypeError : ne peut concaténer que str (pas "NoneType") en str
Quelqu'un peut-il m'aider?

Étant donné que la bibliothèque est officiellement compatible avec les environnements d'exécution Python 2 et Python 3, proposez de fermer ce problème.

salut,

J'obtiens cette erreur "ModuleNotFoundError: No module named 'office365.sharepoint.client_context'" lorsque j'utilise l'environnement de projet dans pycharm pendant l'exécution. MAIS cela fonctionnera très bien si j'utilise l'environnement système Python. Le même comportement soit j'utilise Python 3.6 ou 3.7.

S'il vous plaît, aidez-vous !
Merci.

Cette page vous a été utile?
0 / 5 - 0 notes