Office365-rest-python-client: Kann es nicht für Python 3 verwenden

Erstellt am 4. Juli 2017  ·  24Kommentare  ·  Quelle: vgrem/Office365-REST-Python-Client

Gibt es ein Problem mit Python 3?

bug enhancement

Hilfreichster Kommentar

@vic-by Ein kürzlich durchgeführter Commit behebt das Problem: https://github.com/vgrem/Office365-REST-Python-Client/commit/90731f
Beachten Sie, dass dieser Commit zu diesem Zeitpunkt noch nicht auf pypi gepusht wurde. Wenn Sie also pip install Office365-REST-Python-Client ausführen, erhalten Sie diesen Code nicht. Die Installation von git wird: pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

Alle 24 Kommentare

Hallo,

es sollte mit beiden Versionen von Python kompatibel sein: 2 und 3, aber lassen Sie es mich überprüfen. Werde auf dich zurückkommen.

Hallo Danke für die prompte Antwort.
Unten ist der Fehler, den ich bekomme
`------------------------------------------------- --------------------------
ModuleNotFoundError Traceback (letzter Aufruf zuletzt)
in()
1 Json importieren
2
----> 3 aus office365.runtime.auth.authentication_context import AuthenticationContext
4 aus office365.runtime.client_request import ClientRequest
5 aus office365.runtime.utilities.request_options import RequestOptions

ModuleNotFoundError: Kein Modul namens 'office365'`

Und ja, ich habe das Modul pip installiert :)

Hallo, ich habe Code geschrieben, um die Informationen nur mit dem Requests-Modul zu erhalten. und ich kann die FedAuth- und rtFa-Cookies erfolgreich abrufen. Es wirft jedoch einen Fehler Forbidden, wenn ich versuche, die SiteUsers zu erhalten.
Können Sie dabei bitte helfen?
`Importanfragen

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

filecontent = open(path,'r')
SharepointOnlineAuth = filecontent.read()
SharepointOnlineAuth=SharepointOnlineAuth.format('[email protected]','Password',TopLevelUrl)

Rufen wir an, um das Token zu erhalten, um die Cookies zu erhalten

response=requests.post(url,data=SharepointOnlineAuth,headers=headers)
s=str(Antwort.Inhalt)
Start = [pos für pos in range(len(s)) if s[pos:].startswith('')][0]
Finish= [pos für pos in range(len(s)) if s[pos:].startswith('
')][0]
LoginResponse=s[Start+40:Ende]

Lassen Sie uns nun die Cookies holen, um den Anruf an SharePoint Online zu tätigen

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

Aufrufen der Sharepoint-REST-Api mithilfe von Cookies, die von oben erhaltenem Aufruf

url=TopLevelUrl+'/_api/web/siteusers'
Drucken (URL)
_Fedauth='FedAuth={}'.format(response.cookies['FedAuth'])
_rtFa='rtFa={}'.format(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, wie Gecko) Chrome/59.0.3071.115 Safari/537.36'}
headers.update(_FinalDict)

Drucken (Kopfzeilen)

response=requests.get(url,headers=header)
drucken (Antwort)`

bekomme einen Fehler auf Python3.4:

_Traceback (letzter Aufruf zuletzt):
Datei "auth_sharepoint_online365.py", Zeile 2, in
aus office365.runtime.auth.authentication_context importieren AuthenticationContext
Datei "authentication_context.py", Zeile 2, in
aus office365.runtime.auth.saml_token_provider importieren SamlTokenProvider
Datei "saml_token_provider.py", Zeile 2, in
URL-Parse importieren
ImportError: Kein Modul namens ' urlparse '_

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

Das urlparse-Modul wird in Python 3 in urllib.parse umbenannt.

Versuchen Sie dies https://github.com/parthrawale/Python.O365 Ich habe eine .py-Datei geschrieben, die eine Verbindung mit SharePoint Online herstellen kann und sogar einige Methoden zum Abrufen der Daten aus Listen im Wörterbuchformat bietet. Lassen Sie es mich wissen, wenn Sie dabei Hilfe benötigen.

@vic-by Ein kürzlich durchgeführter Commit behebt das Problem: https://github.com/vgrem/Office365-REST-Python-Client/commit/90731f
Beachten Sie, dass dieser Commit zu diesem Zeitpunkt noch nicht auf pypi gepusht wurde. Wenn Sie also pip install Office365-REST-Python-Client ausführen, erhalten Sie diesen Code nicht. Die Installation von git wird: pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

Es ist noch Arbeit erforderlich, um die Bibliothek mit Python 3 wirklich zu erhalten.

Ich bin beim Ausführen der Bibliothek unter Python 3 auf ein Codierungsproblem gestoßen. Es ist beim Ausführen einer list.properties aufgetreten, aber ich bin mir sicher, dass das Problem perpasive ist.

    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>

Ich habe das gleiche Problem mit Python 3: "ModuleNotFoundError: Kein Modul namens 'urlparse'"
Testen der Datei SharePointOnline.py: Authentifizierungsfehler -> Die eingegebenen und gespeicherten Passwörter stimmen nicht überein.

Haben Sie diesen Link https://github.com/parthrawal/Python.O365 versucht, stellen Sie sicher, dass Sie das Dienstkonto dafür verwenden

Jawohl. Kopieren / fügen Sie den Code unten ein:

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

Der folgende Fehler wird zurückgegeben:

....
IndexError: list index out of range

Um mehr Details zu dem Fehler zu erhalten, habe ich in SPOnlineHeaders den folgenden Code (print(s)) eingefügt:

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

Antwort:
... wst:FailedAuthentication...Die eingegebenen und gespeicherten Passwörter stimmen nicht überein...

Ich hoffe, Sie verwenden ein Dienstkonto

Das ist richtig. Ich verwende das Dienstkonto.

Ist das Passwort korrekt? kannst du das bitte nochmal überprüfen. Weil ich versucht habe, den Code auszuführen, funktioniert er einwandfrei. Aber wenn ich ein falsches Passwort eingegeben habe, wird der Fehler "IndexError: list index out of range" ausgegeben.

Jawohl. Das Passwort ist korrekt. Dies geschieht bei einer manuellen Anmeldung.

Ich schreibe den Link in den Browser: https://company.sharepoint.com/

Beim Drücken der Eingabetaste werde ich auf die Anmeldeseite weitergeleitet: 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=....

Nachdem ich auf der Login-Seite den OK-Button gedrückt hatte, sah ich zwei schnelle Links...
Zuerst: 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=
... Und ...
Zweitens: https://login.microsoftonline.com/login.srf?client-request-id=...

Und stoppt schließlich auf der gewünschten Seite:
https://company.sharepoint.com/

Ich habe diesen Code ausgeführt und festgestellt, dass er irgendwo im Code einen 403-Fehler auslöst.

Antwort = request.post(url,data=SharepointOnlineAuth,headers=headers)
s = str(Antwort.Inhalt)
Druck(e)
"b'403 VERBOTEN'"

Ich habe vergessen, Endpunkt zu verwenden

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

URL

Ich habe das gleiche Problem mit urlparse (Python 3.6.5 :: Anaconda, Inc.). Dies wurde durch Ändern von saml_token_provider.py gelöst: from urllib.parse import urlparse [...] url = urlparse(self.url)

Dann fehlte mir web, mit dem ich es installiert habe: pip install lpthw.web . Es scheint jedoch ein Problem zu geben, da ich jetzt folgendes Problem bekomme:
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'

Installieren Sie das utils-Modul in Anaconda.

Installieren Sie das utils-Modul in Anaconda.

Vielen Dank. Nach der Installation von utils musste ich auch db installieren ... es könnte nützlich sein, eine Requirements.txt-Prüfung im Paket zu haben?

Was jetzt passiert, ist, dass die print-Anweisungen für Python3 nicht ausreichend sind:
print "var", var ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("var", var)?

Bitte gehen Sie über folgenden Link:
https://docs.python.org/3.0/whatsnew/3.0.html

@viogp Danke, dass du deine Fortschritte hier ausbügeln könnten . Verwenden Sie diese Bibliothek derzeit in py 2.7 und möchten diese Workflows auf py 3 übertragen.

Hi. Ich habe ein Problem mit dieser Bibliothek.
Beim Abrufen des Tokens ist ein Fehler aufgetreten: AADSTS90023: Ungültige STS-Anforderung.
Beim Abrufen von Authentifizierungs-Cookies ist ein Fehler aufgetreten
return 'FedAuth=' + self.FedAuth + '; rtFa=' + self.rtFa
TypeError: kann nur str (nicht "NoneType") mit str verketten
Kann mir jemand helfen?

Da die Bibliothek offiziell sowohl mit Python 2- als auch mit Python 3-Laufzeiten kompatibel ist, schlagen Sie vor, dieses Problem zu schließen.

Hi,

Ich erhalte diese Fehlermeldung "ModuleNotFoundError: No module named 'office365.sharepoint.client_context'", wenn ich während der Ausführung die Projektumgebung in pycharm verwende. ABER es wird gut funktionieren, wenn ich die Python-Systemumgebung verwende. Das gleiche Verhalten verwende ich entweder Python 3.6 oder 3.7.

Bitte helfen Sie!
Vielen Dank.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen