Office365-rest-python-client: No puedo usarlo para Python 3

Creado en 4 jul. 2017  ·  24Comentarios  ·  Fuente: vgrem/Office365-REST-Python-Client

¿Hay algún problema con Python 3?

bug enhancement

Comentario más útil

@ vic-by Una confirmación reciente soluciona el problema: https://github.com/vgrem/Office365-REST-Python-Client/commit/90731f
Tenga en cuenta que en este momento, esta confirmación aún no se ha enviado a pypi. Entonces, si haces un pip install Office365-REST-Python-Client no obtendrás ese código. La instalación desde git será: pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

Todos 24 comentarios

Hola,

debería ser compatible con ambas versiones de Python: 2 y 3, pero déjame verificarlo. Se pondrá en contacto contigo.

Hola, gracias por la pronta respuesta.
A continuación se muestra el error que recibo
`------------------------------------------------- --------------------------
ModuleNotFoundError Traceback (última llamada más reciente)
en()
1 json de importación
2
----> 3 de office365.runtime.auth.authentication_context import AuthenticationContext
4 de office365.runtime.client_request import ClientRequest
5 de office365.runtime.utilities.request_options import RequestOptions

ModuleNotFoundError: Ningún módulo llamado 'office365'`

Y sí, tengo pip install the moduel :)

Hola, he escrito un código para obtener la información usando solo el módulo de Solicitudes. y puedo obtener las cookies de FedAuth y rtFa correctamente. Sin embargo, arroja un error Prohibido cuando intento obtener los usuarios del sitio.
¿Podrías ayudar en esto?
`solicitudes de importación

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

filecontent = open (ruta, 'r')
SharepointOnlineAuth = filecontent.read ()
SharepointOnlineAuth = SharepointOnlineAuth.format ('[email protected] ',' Contraseña ', TopLevelUrl)

Hagamos una llamada para obtener el Token y obtener las cookies.

respuesta = solicitudes.post (url, datos = SharepointOnlineAuth, encabezados = encabezados)
s = str (respuesta.contenido)
Start = [pos for pos in range (len (s)) if s [pos:]. Startswith ('')] [0]
Finish = [pos para pos in range (len (s)) if s [pos:]. Startswith ('
')] [0]
LoginResponse = s [Inicio + 40: Finalizar]

Ahora, busquemos las cookies para realizar una llamada a SharePoint Online

url = TopLevelUrl + '/ _ formularios / default.aspx? wa = wsignin1.0'
headers = {'content-type': 'application / x-www-form-urlencoded'}
respuesta = solicitudes.post (url, datos = LoginResponse, encabezados = encabezados)

Llamar a la API REST de Sharepoint utilizando cookies obtenidas desde arriba Llamar

url = TopLevelUrl + '/ _ api / web / siteusers'
imprimir (url)
_Fedauth = 'FedAuth = {}'. Formato (response.cookies ['FedAuth'])
_rtFa = 'rtFa = {}'. formato (response.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, como Gecko) Chrome / 59.0.3071.115 Safari / 537.36'}
headers.update (_FinalDict)

imprimir (encabezados)

respuesta = solicitudes.get (url, encabezados = encabezados)
imprimir (respuesta) `

obteniendo un error en python3.4:

_Rastreo (llamadas recientes más última):
Archivo "auth_sharepoint_online365.py", línea 2, en
desde office365.runtime.auth.authentication_context import AuthenticationContext
Archivo "authentication_context.py", línea 2, en
desde office365.runtime.auth.saml_token_provider importar SamlTokenProvider
Archivo "saml_token_provider.py", línea 2, en
importar urlparse
ImportError: Ningún módulo llamado ' urlparse ' _

Según https://docs.python.org/2/library/urlparse.html :

El módulo urlparse cambia de nombre a urllib.parse en Python 3.

Pruebe esto https://github.com/parthrawal/Python.O365 . He escrito un archivo .py que puede conectarse a SharePoint Online e incluso tiene algunos métodos para obtener los datos de las listas en formato de diccionario. Avísame si necesitas ayuda.

@ vic-by Una confirmación reciente soluciona el problema: https://github.com/vgrem/Office365-REST-Python-Client/commit/90731f
Tenga en cuenta que en este momento, esta confirmación aún no se ha enviado a pypi. Entonces, si haces un pip install Office365-REST-Python-Client no obtendrás ese código. La instalación desde git será: pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

Todavía se necesita trabajo para obtener la biblioteca realmente con Python 3.

Me he encontrado con un problema de codificación al ejecutar la biblioteca en python 3. Ocurrió al hacer un list.properties, pero estoy seguro de que el problema es generalizado.

    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>

Tengo el mismo problema con Python 3: "ModuleNotFoundError: Ningún módulo llamado 'urlparse'"
Probando el archivo SharePointOnline.py: Fallo de autenticación -> Las contraseñas ingresadas y almacenadas no coinciden.

¿Probó este enlace? Https://github.com/parthrawal/Python.O365 asegúrese de usar la cuenta de servicio para el mismo

Si. Copia / pega el código, en la parte inferior:

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

Se devuelve el siguiente error:

....
IndexError: list index out of range

Para obtener más detalles sobre el error, inserté, en SPOnlineHeaders, el siguiente código (print (s)):

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

Respuesta:
... wst: FailedAuthentication ... Las contraseñas ingresadas y almacenadas no coinciden ...

Espero que lo que estés usando sea una cuenta de servicio.

Eso es correcto. Estoy usando la cuenta de servicio.

¿Es correcta la contraseña? ¿Puedes comprobarlo dos veces? porque intenté ejecutar el código, está funcionando bien. Pero cuando ingresé la contraseña incorrecta, arroja el error "IndexError: índice de lista fuera de rango".

Si. La contraseña es correcta. Esto es lo que sucede al iniciar sesión manualmente.

Escribo el enlace en el navegador: https://company.sharepoint.com/

Al presionar enter, se me redirige a la página de inicio de sesión: 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 = ....

Después de presionar el botón Aceptar en la página de inicio de sesión, vi dos enlaces rápidos ...
Primero: 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 =
... Y ...
Segundo: https: //login.microsoftonline.com/login.srf? Client-request-id = ...

Y finalmente se detiene en la página requerida:
https://company.sharepoint.com/

Ejecuté este código y descubrí que está arrojando un error 403 en algún lugar del código.

respuesta = solicitudes.post (url, datos = SharepointOnlineAuth, encabezados = encabezados)
s = str (respuesta.contenido)
huellas dactilares)
"b'403 PROHIBIDO"

Olvidé usar el punto final

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

urlpar

Tengo el mismo problema con urlparse (Python 3.6.5 :: Anaconda, Inc.). Esto se resolvió modificando saml_token_provider.py: from urllib.parse import urlparse [...] url = urlparse(self.url)

Luego me faltaba web, que lo instalé con: pip install lpthw.web . Sin embargo, parece haber un problema, ya que ahora tengo el siguiente problema:
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'

Instale el módulo de utils en anaconda.

Instale el módulo de utils en anaconda.

Gracias. Después de instalar utils, también necesitaba instalar db ... ¿podría ser útil tener una verificación de requirements.txt en el paquete?

Lo que está sucediendo ahora es que las declaraciones de impresión no son adecuadas para python3:
print "var", var ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("var", var)?

Vaya a través del siguiente enlace:
https://docs.python.org/3.0/whatsnew/3.0.html

@viogp Gracias por publicar su progreso aquí, sería bueno si pudiéramos

Hola. Tengo un problema al utilizar esta biblioteca.
Se produjo un error al recuperar el token: AADSTS90023: Solicitud de STS no válida.
Se produjo un error al recuperar las cookies de autenticación.
return 'FedAuth =' + self.FedAuth + '; rtFa = '+ self.rtFa
TypeError: solo se puede concatenar str (no "NoneType") a str
¿Alguien me puede ayudar?

Dado que la biblioteca es oficialmente compatible con los tiempos de ejecución de Python 2 y Python 3, proponga cerrar este problema.

Hola,

Recibo este error "ModuleNotFoundError: Ningún módulo llamado 'office365.sharepoint.client_context'" cuando utilizo el entorno del proyecto en pycharm durante la ejecución. PERO funcionará bien si uso el entorno del sistema Python. El mismo comportamiento o uso Python 3.6 o 3.7.

¡Por favor ayuda!
Gracias.

¿Fue útil esta página
0 / 5 - 0 calificaciones