ΠΠΎΠ±ΡΠΎΠ΅ ΡΡΡΠΎ,
Π― ΡΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ ΠΏΡΡΠ°ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Sharepoint ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π½ΠΎ Ρ ΠΌΠ΅Π½Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ.
Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ pypi
username = ' [email protected] '
ΠΏΠ°ΡΠΎΠ»Ρ = 'XXXX'
url = ' https://aXXX.sharepoint.com '
_ctx_auth = AuthenticationContext (URL)
Π΅ΡΠ»ΠΈ ctx_auth.acquire_token_for_user (ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠ°ΡΠΎΠ»Ρ):
ctx = ClientContext (url, ctx_auth)
web = ctx.web
ctx.load (ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ)
ctx.execute_query ()
Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ "ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°: {0}". ΡΠΎΡΠΌΠ°Ρ (web.properties ['Title'])
Π΅ΡΠ΅:
ΠΏΠ΅ΡΠ°ΡΡ ctx_auth.get_last_error () _
Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΡΡΠΊΠ° Π²Π΅ΡΡΠΈΠΈ 2.1.8
ctx = ClientContext.connect_with_credentials (site_url, UserCredential (ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠ°ΡΠΎΠ»Ρ))
Π½ΠΎ Ρ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΡ:
_ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΎΠΊΠ΅Π½Π° ΠΈΠ· ΠΎΡΠ²Π΅ΡΠ° XML: AADSTS500069: ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ "XXXX" Π»ΠΈΠ±ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Π°.
ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² cookie Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ https://XXX.sharepoint.com/_vti_bin/idcrl.svc_
ΠΡΠΎ ΠΌΠ΅ΡΠ°Π΅Ρ ΠΌΠ½Π΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΌΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ...
ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠ½Π΅, ΠΏΠΎΡΠ΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° ΠΈ ΠΊΠ°ΠΊ Π΅Π΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ?
ΠΠ°ΡΠ°Π½Π΅Π΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ.
ΠΡΠΈΠ²Π΅Ρ!
Π£Π΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π½ΠΎ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅Ρ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΊΠΎΠ΄ΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ»ΡΠΆΠ±Ρ Azure AD STS.
Π§ΡΠΎΠ±Ρ ΡΡΠΎ ΡΠΎΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΡΠΎΡΡΠ½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ:
ΠΊΠ°ΠΊΠΎΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π°?
Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°ΠΊΡΠΎΡΠ½Π°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ?
ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ - ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ° ΡΡΠ΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠΎΡΠΎΠΊ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΠΎΠΊ _SharePoint App-Only_.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
ctx = ClientContext.connect_with_credentials(site_url, ClientCredential(client_id,client_secret))
target_web = ctx.web
ctx.load(target_web)
ctx.execute_query()
ΠΠΎΠ±ΡΡΠΉ Π΄Π΅Π½Ρ
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π±ΡΡΡΡΡΠΉ ΠΎΡΠ²Π΅Ρ ΠΈ ΠΏΠΎΠΌΠΎΡΡ.
- ΠΊΠ°ΠΊΠΎΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π°?
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ [email protected]
- Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°ΠΊΡΠΎΡΠ½Π°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ?
Π― ΡΠΏΡΠΎΡΠΈΠ» ΠΠ’-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² Π² ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΈ ΠΎΠ½ΠΈ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΌΠ½Π΅, ΡΡΠΎ Π² ΠΌΠΎΠ΅ΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π½Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ°ΠΊΡΠΎΡΠ½Π°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, Ρ ΠΎΡΡ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅ΡΠ½ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°ΠΊΡΠΎΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠ΅ΠΉ.
Π’Π°ΠΊΠΆΠ΅ Ρ ΠΏΠΎΠΏΡΠΎΡΠΈΠ» ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠ½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΆΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ FullControl
Π΄ΠΎΡΡΡΠΏ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ Π΄Π»Ρ tenant
, Ρ
ΠΎΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² site collection
Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, Π²ΠΎΡ XML-ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ. :
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>
URL ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ²: https://contoso.sharepoint.com/_layouts/15/appinv.aspx
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠΌ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΠΈΠ»ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΠΎΠ±ΡΡΠΉ Π΄Π΅Π½Ρ,
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΡΠ²ΡΠ·Π°ΡΡΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΠ’-ΡΠ»ΡΠΆΠ±Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ
ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ https://login.microsoftonline.com/extSTS.srfΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ):Π€Π°ΠΉΠ» "c: /Users/pablo.arias/Desktop/GD/Conexion_sharepoint.py", ΡΡΡΠΎΠΊΠ° 13, Π²
ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ - ALSSVSHNGSDES, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΄Π°Π΅Ρ Π²Π°ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ ΠΏΡΡΠ°Π»ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΡΠ΅ΡΠ΅Π· SharePoint App-Only, Π½ΠΎ Ρ Π½Π΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°ΠΉΠ» APP Domain ΠΈ Redirect URI, Ρ ΠΏΡΡΠ°Π»ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉ Π°Π΄ΡΠ΅Ρ sharepoint Π² ΠΎΠ±ΠΎΠΈΡ , Π½ΠΎ ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° Π΄Π°Π΅Ρ ΠΌΠ½Π΅ ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠΎ Π½Π΅Π²Π΅ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠ°ΡΠ°Π½Π΅Π΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ.
ΠΠΎΠ±ΡΡΠΉ Π²Π΅ΡΠ΅Ρ,
ΠΊΠ°ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ
Π½ΠΎ Ρ Π½Π΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π°ΡΡ ΡΠΊΠ»Π°Π΄ΠΊΠΈ APP Domain ΠΈ Redirect URI, Ρ ΠΏΡΡΠ°Π»ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉ Π°Π΄ΡΠ΅Ρ SharePoint Π² ΠΎΠ±ΠΎΠΈΡ , Π½ΠΎ ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠΎ Π½Π΅Π²Π΅ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΎΡΠΈΠ±ΠΊΠ°, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΠ·-Π·Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π΄Π»Ρ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ URI ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π½ΠΈΠΆΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΡ .
ΠΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
appregnew.aspx
Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ SharePoint Online. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, https://example.sharepoint.com/_layouts/15/appregnew.aspx
.Python console
. Π ΡΠ°Π·Π΄Π΅Π»Π΅ Β« ΠΠΎΠΌΠ΅Π½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ» ΡΠΊΠ°ΠΆΠΈΡΠ΅ www.localhost.com
. Π ΠΏΠΎΠ»Π΅ URI ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΊΠ°ΠΆΠΈΡΠ΅ https://www.localhost.com
.ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠ½ΠΎΠ³Π΄Π°, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ Π΄ΠΎΠΌΠ΅Π½, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
sharepoint.com
domain Π² ΠΏΠΎΠ»ΡΡ App Domain ΠΈ Redirect URI , Π²ΠΌΠ΅ΡΡΠΎlocalhost
ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅An unexpected error has occurred
. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡappregnew.aspx
ΠΈ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ±Π° ΠΏΠΎΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ URI localhost.
Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ " Π‘ΠΎΠ·Π΄Π°ΡΡ" .
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ appinv.aspx
Π² ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π΅ ΡΠ°ΠΉΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, https://example.sharepoint.com/_layouts/15/appinv.aspx
Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ _site-scoped_.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΠ°ΠΉΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, URL-Π°Π΄ΡΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡΡΠ°ΡΡ
-admin
Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρhttps://example-admin.sharepoint.com/_layouts/15/appinv.aspx
ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π±ΡΡΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ»Ρ ΠΎΡ Π²Π°ΡΠ° ΡΡΠΎΠ²Π½Ρ Π°ΡΠ΅Π½Π΄Π°ΡΠΎΡΠ°, Π·Π°ΠΏΡΠΎΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ XML Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ :
<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" /> </AppPermissionRequests>
ΠΡΠ»ΠΈ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅
Sorry, only tenant administrators can add or give access to this app" and the Trust It button is disabled, you are not on the correct page for the tenant administration site. Check the appinv.aspx page URL and make sure it includes
-admin.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° Π² Jupiter Notebook.
client_id = "--client id goes here--"
client_secret = "-- secret goes here--"
site_url = "https://example.sharepoint.com/"
from office365.runtime.auth.ClientCredential import ClientCredential
from office365.sharepoint.client_context import ClientContext
ctx = ClientContext.connect_with_credentials(site_url, ClientCredential(client_id, client_secret))
web = ctx.web
ctx.load(web)
ctx.execute_query()
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΠΎΠ±ΡΠΎΠ΅ ΡΡΡΠΎ,
Π― ΠΏΡΡΠ°Π»ΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ API, ΡΠ»Π΅Π΄ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³Ρ.
ΠΠΎΠ³Π΄Π° Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ Π΄ΠΎΠΌΠ΅Π½ APP ΠΊΠ°ΠΊ www.localhost.com ΠΈ URI ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊ https://www.localhost.com, Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ: ΠΠ΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π΄ΠΎΠΌΠ΅Π½ APP.
ΠΡΠΈΠΊΡΠ΅ΠΏΠΈΠ» ΡΠΊΡΠΈΠ½ΡΠΎΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΏΠΎΠΏΡΡΠΊΠΈ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠ½Π΅, ΡΡΠΎ Ρ Π΄Π΅Π»Π°Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ?
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ»ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΎ Β«localhostΒ» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ ΡΡΠΎ Π±ΡΠ» Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ URI Π΄Π»Ρ Sharepoint, Π½ΠΎ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΏΠΎΠ»Ρ Β«ΠΠΎΠΌΠ΅Π½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ» ΠΈ Β«URI ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΒ».
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π°ΡΠ°Π½Π΅Π΅!
ΠΠΎΠ±ΡΠΎΠ΅ ΡΡΡΠΎ,
ΠΊΠ°ΠΊ Π½Π°ΡΡΠ΅Ρ localhost
Π²ΠΌΠ΅ΡΡΠΎ www.localhost.com
?
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΡΡΠΎ.
ΠΠΎΠ±ΡΡΠΉ Π΄Π΅Π½Ρ
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΡΡΠΎ Π½Π΅ ΠΎΡΠ²Π΅ΡΠΈΠ» ΡΠ°Π½ΡΡΠ΅.
Π£ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ,
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ API ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ XML.
ΠΠΎΠ³Π΄Π° Ρ Π΄Π΅Π»Π°Ρ Π·Π°ΠΏΡΠΎΡ, Ρ ΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° (ΠΈΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΡΡΠΎ Π½Π° ΠΈΡΠΏΠ°Π½ΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅):
office365.runtime.client_request_exception.ClientRequestException: ('-2147024891, System.UnauthorizedAccessException', 'Acceso denegado. No tieneel permiso necesario para realizar esta acciΓ³n o tener acceptso a este recurso. ',' 403 ΠΡΠΈΠ±ΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°: Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ URL
Π’Π°ΠΊ ΡΡΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΠΎΠΌΠΎΡΡ.
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΡΠ°Π³ΠΈ 6β9 ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
ΠΠΎΠ±ΡΡΠΉ Π΄Π΅Π½Ρ
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ XML, ΠΈ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ctx = ClientContext.connect_with_credentials (site_url, ClientCredential (client_id, client_secret))
web = ctx.web
ctx.load (ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ)
ctx.execute_query ()
print ("ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°: {0}". format (web.properties ['Title']))
>
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°: NEGOCIO
ΠΠΎΠ»ΡΡΠΎΠ΅ Π²Π°ΠΌ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π°ΡΡ ΠΏΠΎΠΌΠΎΡΡ.
@ pobs93 Π― ΠΏΡΡΠ°ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. Π― ΠΌΠ΅Π½ΡΡ ΡΠ²ΠΎΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ. Π½ΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΡ, ΡΡΠΎ ΠΈ Π²Ρ Π±ΡΠ»ΠΈ -2147024891, System.UnauthorizedAccessException ',' ΠΠΎΡΡΡΠΏ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½. Π£ Π²Π°Ρ Π½Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΠ»ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ. ',' 403 ΠΡΠΈΠ±ΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°: Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ URL:
ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ Π²Π½Π΅ΡΠ»ΠΈ Π² ΡΠ²ΠΎΠΉ XML-ΠΊΠΎΠ΄ ΠΏΡΠ°Π² Π΄ΠΎΡΡΡΠΏΠ°? ΠΠΎΠ΄ΡΠΊΠ°ΠΆΠΈΡΠ΅, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π·Π°ΡΠ°Π½Π΅Π΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ
Π²Ρ ΠΌΠ΅Π½ΡΠ»ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ XML? ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π»ΠΈ Π²Ρ Π·Π΄Π΅ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π·ΠΈΡΡ URL-Π°Π΄ΡΠ΅Ρ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΅ΡΡΡ. ?