Office365-rest-python-client: "TypeError: kann 'str'- und 'NoneType'-Objekte nicht verketten" auf Anfrage, um eine Datei zu erhalten.

Erstellt am 12. Juni 2017  ·  14Kommentare  ·  Quelle: vgrem/Office365-REST-Python-Client

Ich versuche, eine Datei herunterzuladen, auf die (über einen Browser) unter dieser URL zugegriffen werden kann:
https://test.sharepoint.com/sites/team/teamdocuments/subfolder/document.docx

Ich verwende ein ClientRequest-Objekt mit dem folgenden Code:

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)

Beim Ausführen erhalte ich die folgende Spur:

$ 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

Stimmt etwas nicht mit der Verwendung des Moduls?

bug

Hilfreichster Kommentar

Ich hatte ein ähnliches Problem, da unsere SharePoint-Instanz hinter einem Proxy ausgeführt wird. Ich musste die SamlTokenProvider Unterklasse bilden, um die Anmelde-URL ( self.sts ) und die Cookie-Namen zu überschreiben. Ich denke, das Problem ist, dass der Code während der Initialisierung das Ergebnis von acquire_authentication_cookie nicht überprüft. Wenn die Authentifizierung also fehlschlägt, hören Sie nichts davon, bis die Cookies verwendet werden.

Alle 14 Kommentare

Ich hatte ein ähnliches Problem, da unsere SharePoint-Instanz hinter einem Proxy ausgeführt wird. Ich musste die SamlTokenProvider Unterklasse bilden, um die Anmelde-URL ( self.sts ) und die Cookie-Namen zu überschreiben. Ich denke, das Problem ist, dass der Code während der Initialisierung das Ergebnis von acquire_authentication_cookie nicht überprüft. Wenn die Authentifizierung also fehlschlägt, hören Sie nichts davon, bis die Cookies verwendet werden.

Ich bin auf das gleiche Problem gestoßen. Es scheint, als würden Authentifizierungsfehler nicht von Ausnahmen behandelt. Es sprudelt nur, wenn Cookies abgefragt werden. Überprüfen Sie Ihre Zugangsdaten

Gleicher Fehler. Anmeldeinformationen überprüft, aber das Problem besteht weiterhin. Irgendwelche anderen Gedanken? Vielen Dank!

Am Ende habe ich

Danke werde es prüfen.

Hallo, ich habe das gleiche Problem, aber in meinem Fall denke ich, dass es daran liegt, dass ich Sharepoint mit der FormAuthentication-Methode konfiguriert habe. Es funktioniert auf keinen Fall, bis der richtige Token-Anbieter implementiert ist

Ich stoße auch auf dieses Problem, aber nur, wenn ich ein Outlook.com-Konto verwende. Ich hoffe, jemand kann erklären, was hinter den Kulissen vor sich geht und vielleicht eine Lösung anbieten. Hier eine kurze Erklärung:

1) Unsere SharePoint-Site befindet sich in der Cloud (https://mn365.sharepoint.com)
2) Wenn ich die Verbindung zur Site mit meinen State of Minnesota-Anmeldeinformationen herstelle, wird die Verbindung problemlos hergestellt.
3) Da ich aber keine eigenen Zugangsdaten in meine Bewerbung einbetten möchte, habe ich ein "Dienstkonto" nach dem Muster "

Was wäre der Unterschied bei der Authentifizierung zwischen der Verwendung einer Outlook.com-Adresse und einer von meiner Organisation ausgegebenen (in diesem Fall Vorname. [email protected]?

Selbes Problem hier. Wir verwenden AD FS für die Authentifizierung. Bisher habe ich keine Möglichkeit gefunden, Informationen von unserem Sharepoint-Online-Server abzurufen. Ich habe viele Bibliotheken ausprobiert, aber nichts hat für mich funktioniert.

Ich hatte den gleichen Fehler, weil Sharepoint zur Authentifizierung an das lokale STS/ADFS umleitete.

Wir haben einen neuen O365-Benutzer direkt in O365 erstellt, sodass die Umleitung zum lokalen STS/ADFS nicht verwendet wird. Dies hat den Fehler behoben

Ich bin zu Sharepy gewechselt, das ootb läuft und meine Bedingungen abdeckt

Hier gilt das gleiche:
Für den Logger "office365.runtime.auth.saml_token_provider.SamlTokenProvider._process_service_token_response" konnten keine Handler gefunden werden.

Glück von anderen?

Vielleicht hilft folgendes zur weiteren Eingrenzung.

Ich kann mich erfolgreich an der allgemeinen Sharepoint-URL authentifizieren, aber nicht an einer URL, die auf einen bestimmten Teams-Kanal verweist. Der folgende Code funktioniert einwandfrei:

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):

Aber wenn ich die URL ersetze durch:

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

dann bekomme ich folgenden Fehler::

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

Jeder Workaround ist willkommen - in meinem Browser kann ich beide gut sehen.

Wir haben eine Problemumgehung für den oben genannten Anwendungsfall gefunden. Verwenden Sie einfach die Basis-URL, um AuthenticationContext . Neue ClientContext Objekte können mit verschiedenen URLs erstellt werden.

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)
..
..

Hallo Leute!

Seit dem Zeitpunkt, an dem dieses Problem gemeldet wurde, wurden bis jetzt folgende Verbesserungen/Bugfixes in Bezug auf die _Unterstützung für SAML-basierte Verbundauthentifizierung mit SharePoint Online vorgenommen_:

  • #210 – Verbindung mit SharePoint nicht möglich (acquire_authentication_cookie-Fehler bei Verbund)
  • #170 - Beim Abrufen des Tokens ist ein Fehler aufgetreten: AADSTS50126: Fehler beim Validieren der Anmeldeinformationen aufgrund eines ungültigen Benutzernamens oder Passworts
  • #85 - Verwenden von Office-365-REST mit ADFS
  • #84 – Sites mit lokalem STS authentifizieren sich nicht (AADSTS70002)

Der angegebene Fehler sollte also nicht mehr auftreten, stellen Sie einfach sicher, dass Sie die _neueste_ Version ( 2.1.10.1 oder höher) verwenden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen