Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ» ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π° Π² SharePoint Π² Office 365, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π». ΠΠΎΡ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄:
ΠΈΠ· office365.runtime.auth.authentication_context ΠΈΠΌΠΏΠΎΡΡ AuthenticationContext
ΠΈΠ· office365.sharepoint.client_context ΠΈΠΌΠΏΠΎΡΡ ClientContext
ΠΈΠ· office365.runtime.utilities.request_options ΠΈΠΌΠΏΠΎΡΡ RequestOptions
from os.path import basename
ctx_auth = AuthenticationContext (url = base_url)
Π΅ΡΠ»ΠΈ Π½Π΅ ctx_auth.acquire_token_for_user (ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ = ΠΈΠΌΡ_ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠ°ΡΠΎΠ»Ρ = pwd):
ΠΏΠ΅ΡΠ°ΡΡ (ctx_auth.get_last_error ())
Π²ΡΡ
ΠΎΠ΄()
ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π° = Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ (ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ)
files_url = "{0} / _ api / web / GetFolderByServerRelativeUrl ('{1}') / Files / add (url = '{2}', overwrite = true)"
full_url = files_url.format (base_url, folder_url, file_name)
options = RequestOptions (base_url)
context = ClientContext (base_url, ctx_auth)
context.request_form_digest ()
ΠΠΎΡ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ:
ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΎΠΊΠ΅Π½Π°: AADSTS70002: ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ΅ΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
. AADSTS50053: Π²Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· ΠΏΡΡΠ°Π»ΠΈΡΡ Π²ΠΎΠΉΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΡ Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ.
ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² cookie Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ):
Π€Π°ΠΉΠ» "testsimplified.py", ΡΡΡΠΎΠΊΠ° 24, Π²
context.request_form_digest ()
Π€Π°ΠΉΠ» "C: todoitems \ pysharepointerrers \ office365 \ sharepoint \ client_context.py", ΡΡΡΠΎΠΊΠ° 33, Π² request_form_digest
self.authenticate_request (Π·Π°ΠΏΡΠΎΡ)
Π€Π°ΠΉΠ» "C: todoitems \ pysharepointerrers \ office365 \ runtime \ client_runtime_context.py", ΡΡΡΠΎΠΊΠ° 16, Π² Authenticate_request
self .__ auth_context.authenticate_request (Π·Π°ΠΏΡΠΎΡ)
Π€Π°ΠΉΠ» "C: todoitems \ pysharepointerrers \ office365 \ runtime \ auth \ authentication_context.py", ΡΡΡΠΎΠΊΠ° 27, Π² authenticate_request
request_options.set_header ('Cookie', self.provider.get_authentication_cookie ())
Π€Π°ΠΉΠ» "C: todoitems \ pysharepointerrers \ office365 \ runtime \ auth \ saml_token_provider.py", ΡΡΡΠΎΠΊΠ° 69, Π² get_authentication_cookie
return 'FedAuth =' + self.FedAuth + '; rtFa = '+ self.rtFa
TypeError: Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ str, Π° Π½Π΅ NoneType
ΠΡΡΡ ΠΈΠ΄Π΅ΠΈ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅Ρ? Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ.
ΠΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°Π»ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΡΠΎ ΠΌΠ½ΠΎΠΉ Π² ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊ. Π― ΡΠΎΠΆΠ΅ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°, Ρ ΠΌΠ΅Π½Ρ ΡΠΎΠΆΠ΅ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ°, Π½Π°ΡΠ°Π»Π°ΡΡ Π² ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΠΊΠΎΡΠΎ ΠΈΡΠΏΡΠ°Π²ΡΡ. ΠΠΎΠ΄ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π°
ctx.excecute_query ()
ctx_auth = AuthenticationContext(url)
if ctx_auth.acquire_token_for_user(username, password):
ctx = ClientContext(url, ctx_auth)
web = ctx.web
ctx.load(web)
ctx.execute_query()
print "SharePoint Site: {0}".format(web.properties['Title'])
else:
print ctx_auth.get_last_error()
ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ:
return 'FedAuth=' + self.FedAuth + '; rtFa=' + self.rtFa
TypeError: cannot concatenate 'str' and 'NoneType' objects
ΠΠΎΠ»ΡΡΠ°Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅Π½ΠΈΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΎΠΊΠ΅Π½Π°: AADSTS70002: ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ . AADSTS50053: Π²Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· ΠΏΡΡΠ°Π»ΠΈΡΡ Π²ΠΎΠΉΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΡ Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ.
ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΎΠΊΠ΅Π½Π°: AADSTS70002: ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ . AADSTS50126: Π½Π΅Π²Π΅ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΡΠ°ΠΉΡΡ ΡΠ΅ΡΠ΅Π· Π±ΡΠ°ΡΠ·Π΅Ρ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ.
Π ΠΈΡΠΎΠ³Π΅ Ρ ΡΠΎΠ·Π΄Π°Π» ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π° Π² SharePoint Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ MicroSoft Graph. https://github.com/bobbydurrett/copyfiletosharepoint
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @bobbydurrett ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ!
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ° Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ (AD Azure Π΄Π»Ρ O365), Π½ΠΎ Ρ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ! @majduddin @zachnamyat @EGCPHD Π²Ρ Π½Π°ΡΠ»ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅?
Π― ΡΠ΅ΡΠΈΠ» Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: https://github.com/vgrem/Office365-REST-Python-Client/issues/76
ΠΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΠ΅ Π·Π°ΠΊΡΡΡΡ ΡΡΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π° ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π½Π½Π°Ρ Π² Π²Π΅ΡΡΠΈΠΈ 2.1.10
ΠΈ Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ Π½ΠΈΠΊΡΠΎ Ρ Π½Π΅ΠΉ Π½Π΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΡΡ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π ΠΈΡΠΎΠ³Π΅ Ρ ΡΠΎΠ·Π΄Π°Π» ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π° Π² SharePoint Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ MicroSoft Graph. https://github.com/bobbydurrett/copyfiletosharepoint