Microsoft 365 & Microsoft Graph Library für Python
PIP verwenden:
pip install Office365-REST-Python-Client
Alternativ könnte die neueste Version direkt über GitHub installiert werden:
pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git
Für die folgenden Beispiele finden Sie im Azure -Portal relevante Anmeldeinformationen.
Schritte zum Zugriff:
Der ClientContext
-Client bietet die Unterstützung für eine ältere SharePoint -Ruhe und OneDrive für Business Rest -APIs, die Liste der unterstützten Versionen:
Die folgenden Autoren werden unterstützt:
Diese Auth-Methode ist mit SharePoint-On-Premises kompatibel und immer noch relevantes Modell in SharePoint On-Premises als SharePoint Online sind die folgenden Methoden verfügbar:
ClientContext.with_credentials(client_credentials)
ClientContext.with_client_credentials(client_id, client_secret)
Verwendung:
client_credentials = ClientCredential('{client_id}','{client_secret}')
ctx = ClientContext('{url}').with_credentials(client_credentials)
Dokumentation:
Beispiel: connect_with_app_principal.py
Verwendung:
user_credentials = UserCredential('{username}','{password}')
ctx = ClientContext('{url}').with_credentials(user_credentials)
Beispiel: connect_with_user_credential.py
Dokumentation:
Beispiel: connect_with_client_certificate.py
Um sich interaktiv anzumelden, dh über einen lokalen Browser
Voraussetzung:
Konfigurieren Sie im Azure -Portal den Umleitungs -URI Ihrer "Mobil- und Desktop -Anwendung" als
http://localhost
.
Beispiel: connect_interactive.py
Verwendung:
from office365 . sharepoint . client_context import ClientContext
ctx = ClientContext ( "{site-url}" ). with_interactive ( "{tenant-name-or-id}" , "{client-id}" )
me = ctx . web . current_user . get (). execute_query ()
print ( me . login_name )
Es stehen zwei Ansätze zur Verfügung, um API -Abfragen durchzuführen:
ClientContext class
- wo Sie SharePoint -Ressourcen wie Web
, ListItem
usw. ansprechen (empfohlen) from office365 . runtime . auth . user_credential import UserCredential
from office365 . sharepoint . client_context import ClientContext
site_url = "https://{your-tenant-prefix}.sharepoint.com"
ctx = ClientContext ( site_url ). with_credentials ( UserCredential ( "{username}" , "{password}" ))
web = ctx . web
ctx . load ( web )
ctx . execute_query ()
print ( "Web title: {0}" . format ( web . properties [ 'Title' ]))
oder alternativ durch Methodenketten (auch bekannt als fließende Schnittstelle):
from office365 . runtime . auth . user_credential import UserCredential
from office365 . sharepoint . client_context import ClientContext
site_url = "https://{your-tenant-prefix}.sharepoint.com"
ctx = ClientContext ( site_url ). with_credentials ( UserCredential ( "{username}" , "{password}" ))
web = ctx . web . get (). execute_query ()
print ( "Web title: {0}" . format ( web . properties [ 'Title' ]))
SharePointRequest class
- wo Sie REST -Abfragen konstruieren (und kein Modell ist beteiligt)
Das Beispiel zeigt, wie Sie Web
lesen:
import json
from office365 . runtime . auth . user_credential import UserCredential
from office365 . sharepoint . request import SharePointRequest
site_url = "https://{your-tenant-prefix}.sharepoint.com"
request = SharePointRequest ( site_url ). with_credentials ( UserCredential ( "{username}" , "{password}" ))
response = request . execute_request ( "web" )
json = json . loads ( response . content )
web_title = json [ 'd' ][ 'Title' ]
print ( "Web title: {0}" . format ( web_title ))
Die Liste der Beispiele:
Arbeiten mit Dateien
Arbeiten mit Listen und Listenelemente
Weitere Szenarien finden Sie einen Beispiel für einen Beispiel für einen Beispiel für ein Beispiel
Derzeit wird die Unterstützung für nicht standardmäßige SharePoint-Umgebungen implementiert. Derzeit unterstützt:
Um die Authentifizierung an GCC -High -Endpunkten zu ermöglichen, fügen Sie den Parameter environment='GCCH'
hinzu, wenn Sie die ClientContext class
mit .with_user_credentials
, .with_client_credentials
oder .with_credentials
aufrufen
Beispiel:
from office365 . sharepoint . client_context import ClientContext
client_credentials = ClientCredential ( '{client_id}' , '{client_secret}' )
ctx = ClientContext ( '{url}' ). with_credentials ( client_credentials , environment = 'GCCH' )
Die Liste der unterstützten APIs:
Da Outlook Rest -APIs sowohl in Microsoft Graph als auch im Outlook -API -Endpunkt verfügbar sind, sind die folgenden Clients verfügbar:
GraphClient
, das die Outlook-API v2.0
-Version abzielt ( Heutzutage bevorzugen Sie den Übergang zu Microsoft Graph-basierten Outlook-REST-API für eine Details).OutlookClient
, das die Outlook -API v1.0
-Version abzielt (nicht für die Verwendung empfohlen, da die Version v1.0
veraltet ist.)Die Microsoft Authentication Library (MSAL) für Python, die als Abhängigkeit ausgeht, wird als Standardbibliothek verwendet, um Token zu erhalten, um die Microsoft -Graph -API aufzurufen.
Verwenden der Microsoft Authentication Library (MSAL) für Python
HINWEIS: Der Zugriffs -Token wird in den angegebenen Beispielen per Client -Anmeldeinformationen erfasst. Andere Formen der Token-Akquisition finden Sie hier: https://msal-python.readthedocs.io/en/latest/
import msal
from office365 . graph_client import GraphClient
def acquire_token ():
"""
Acquire token via MSAL
"""
authority_url = 'https://login.microsoftonline.com/{tenant_id_or_name}'
app = msal . ConfidentialClientApplication (
authority = authority_url ,
client_id = '{client_id}' ,
client_credential = '{client_secret}'
)
token = app . acquire_token_for_client ( scopes = [ "https://graph.microsoft.com/.default" ])
return token
client = GraphClient ( acquire_token )
In Bezug auf die Microsoft -Graph -API -Authentifizierung werden jedoch auch ein weiterer OAuth -Spezifikationsbibliotheken wie Adal unterstützt.
Verwenden von Adal Python
Verwendung
import adal
from office365 . graph_client import GraphClient
def acquire_token_func ():
authority_url = 'https://login.microsoftonline.com/{tenant_id_or_name}'
auth_ctx = adal . AuthenticationContext ( authority_url )
token = auth_ctx . acquire_token_with_client_credentials (
"https://graph.microsoft.com" ,
"{client_id}" ,
"{client_secret}" )
return token
client = GraphClient ( acquire_token_func )
Das Beispiel zeigt, wie eine E -Mail über den Microsoft -Grafikendpunkt gesendet wird.
HINWEIS: Der Zugriffs -Token wird über den Client -Anmeldeinformationsfluss erfasst
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
client . me . send_mail (
subject = "Meet for lunch?" ,
body = "The new cafeteria is open." ,
to_recipients = [ "[email protected]" ]
). execute_query ()
Zusätzliche Beispiele und Szenarien:
Weitere Szenarien finden Sie im Abschnitt Beispiele für andere Szenarien
OneDrive Graph API Referenz
Die Microsoft Authentication Library (MSAL) für Python, die als Abhängigkeit einhergeht, wird verwendet, um Token zu erhalten
import msal
def acquire_token_func ():
"""
Acquire token via MSAL
"""
authority_url = 'https://login.microsoftonline.com/{tenant_id_or_name}'
app = msal . ConfidentialClientApplication (
authority = authority_url ,
client_id = '{client_id}' ,
client_credential = '{client_secret}'
)
token = app . acquire_token_for_client ( scopes = [ "https://graph.microsoft.com/.default" ])
return token
Das Beispiel zeigt, wie die URL des Laufwerks aufgezählt und gedruckt wird, was der list available drives
entspricht
HINWEIS: Der Zugriffs -Token wird über den Client -Anmeldeinformationsfluss erfasst
from office365 . graph_client import GraphClient
tenant_name = "contoso.onmicrosoft.com"
client = GraphClient ( acquire_token_func )
drives = client . drives . get (). execute_query ()
for drive in drives :
print ( "Drive url: {0}" . format ( drive . web_url ))
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
# retrieve drive properties
drive = client . users [ "{user_id_or_principal_name}" ]. drive . get (). execute_query ()
# download files from OneDrive into local folder
with tempfile . TemporaryDirectory () as path :
download_files ( drive . root , path )
Wo
def download_files ( remote_folder , local_path ):
drive_items = remote_folder . children . get (). execute_query ()
for drive_item in drive_items :
if drive_item . file is not None : # is file?
# download file content
with open ( os . path . join ( local_path , drive_item . name ), 'wb' ) as local_file :
drive_item . download ( local_file ). execute_query ()
Zusätzliche Beispiele:
Weitere Beispiele finden Sie im Abschnitt OneDrive -Beispiele.
Die Microsoft Authentication Library (MSAL) für Python, die als Abhängigkeit einhergeht, wird verwendet, um Token zu erhalten
Das Beispiel zeigt, wie ein neues Team unter einer Gruppe erstellt wird, das entspricht, um Teamendpunkt Create team
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
new_team = client . groups [ "{group-id}" ]. add_team (). execute_query_retry ()
Zusätzliche Beispiele:
Weitere Szenarien finden Sie im Abschnitt Beispiele für andere Szenarien
Die Bibliothek unterstützt OneNote -API in Bezug auf Anrufe an die OneNote -Notizbücher, Abschnitte und Seiten eines Benutzers in einem persönlichen oder Organisationskonto
Beispiel: Erstellen Sie eine neue Seite
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
files = {}
with open ( "./MyPage.html" , 'rb' ) as f ,
open ( "./MyImage.png" , 'rb' ) as img_f ,
open ( "./MyDoc.pdf" , 'rb' ) as pdf_f :
files [ "imageBlock1" ] = img_f
files [ "fileBlock1" ] = pdf_f
page = client . me . onenote . pages . add ( presentation_file = f , attachment_files = files ). execute_query ()
Das Beispiel zeigt, wie Sie eine neue Planer -Aufgabe erstellen, die entspricht, um den Endpoint Create plannerTask
:
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
task = client . planner . tasks . add ( title = "New task" , planId = "--plan id goes here--" ). execute_query ()
Die folgenden Bibliotheken werden installiert, wenn Sie die Client -Bibliothek installieren:
Kraftvoller Python -Ide Pycharm
von Jetbrains
.