Microsoft 365 و Microsoft Graph Library لـ Python
استخدم PIP:
pip install Office365-REST-Python-Client
بدلاً من ذلك ، يمكن تثبيت أحدث إصدار مباشرة عبر Github:
pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git
بالنسبة للأمثلة التالية ، يمكن العثور على بيانات الاعتماد ذات الصلة في بوابة Azure.
خطوات للوصول:
يوفر عميل ClientContext الدعم لراحة SharePoint Legacy و OneDrive لبرنامج APIs Rest Business ، قائمة الإصدارات المدعومة:
تدعم تدفقات المصادقة التالية:
تتوافق طريقة AUTH هذه مع SharePoint المحلي وما زالت النموذج ذي الصلة في كل من SharePoint المحليين مثل SharePoint Online ، والطرق التالية متاحة:
ClientContext.with_credentials(client_credentials)ClientContext.with_client_credentials(client_id, client_secret)الاستخدام:
client_credentials = ClientCredential('{client_id}','{client_secret}')
ctx = ClientContext('{url}').with_credentials(client_credentials)
الوثائق:
مثال: connect_with_app_principal.py
الاستخدام:
user_credentials = UserCredential('{username}','{password}')
ctx = ClientContext('{url}').with_credentials(user_credentials)
مثال: connect_with_user_credential.py
الوثائق:
مثال: connect_with_client_certificate.py
لتسجيل الدخول بشكل تفاعلي أي عبر متصفح محلي
المتطلب السابق:
في Azure Portal ، قم بتكوين URI إعادة توجيه "تطبيق الهاتف المحمول وسطح المكتب" الخاص بك كـ
http://localhost.
مثال: connect_interactive.py
الاستخدام:
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 )هناك نهجان متاحان لأداء استعلامات API:
ClientContext class - حيث تستهدف موارد SharePoint مثل Web و ListItem و Etc (الموصى بها) 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' ]))أو بدلاً من ذلك عن طريق السلاسل طريقة (ويعرف أيضًا باسم واجهة بطلاقة):
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 - حيث تقوم ببناء استعلامات راحة (ولا يوجد أي نموذج)
يوضح المثال كيفية قراءة خصائص Web :
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 ))قائمة الأمثلة:
العمل مع الملفات
العمل مع القوائم وعناصر القائمة
قم بإحالة قسم الأمثلة لسيناريوهات أخرى
يتم حاليًا تنفيذ دعم بيئات SharePoint غير القياسية. مدعوم حاليا:
لتمكين المصادقة على نقاط النهاية العليا في مجلس التعاون الخليجي ، أضف معلمة environment='GCCH' عند استدعاء ClientContext class مع .with_user_credentials ، .with_client_credentials ، أو .with_credentials
مثال:
from office365 . sharepoint . client_context import ClientContext
client_credentials = ClientCredential ( '{client_id}' , '{client_secret}' )
ctx = ClientContext ( '{url}' ). with_credentials ( client_credentials , environment = 'GCCH' )قائمة واجهات برمجة التطبيقات المدعومة:
نظرًا لأن واجهات برمجة تطبيقات Outlook Rest متوفرة في كل من Microsoft Graph و Outlook API Endpoint ، فإن العملاء التاليين متاحون:
GraphClient الذي يستهدف إصدار Outlook API v2.0 ( المفضل في الوقت الحاضر ، راجع الانتقال إلى Microsoft Graph Rest API للحصول على تفاصيل)OutlookClient الذي يستهدف إصدار Outlook API v1.0 (لا ينصح به للاستخدام منذ أن يتم إهمال إصدار v1.0 .)يتم استخدام مكتبة مصادقة Microsoft (MSAL) لـ Python والتي تأتي كاعتماد كمكتبة افتراضية للحصول على الرموز المميزة للاتصال بـ Microsoft Graph API.
باستخدام مكتبة مصادقة Microsoft (MSAL) لـ Python
ملاحظة: يتم الحصول على رمز الوصول عبر تدفق بيانات اعتماد العميل في الأمثلة المقدمة. يمكن العثور على أشكال أخرى من الاستحواذ على الرمز المميز هنا: 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 )ولكن فيما يتعلق بمصادقة Microsoft Graph API ، يتم دعم المكتبات الأخرى المتوافقة مع مواصفات OAUTH مثل ADAL أيضًا.
باستخدام Adal Python
الاستخدام
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 )يوضح المثال كيفية إرسال بريد إلكتروني عبر نقطة نهاية الرسم البياني Microsoft.
ملاحظة: يتم الحصول على رمز الوصول عبر تدفق بيانات اعتماد العميل
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 ()أمثلة وسيناريوهات إضافية:
ارجع إلى قسم الأمثلة لسيناريوهات أخرى
OneDrive Graph API Reference
يتم استخدام مكتبة مصادقة Microsoft (MSAL) لـ Python التي تأتي كاعتماد على الرمز المميز
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 يوضح المثال كيفية تعداد وطباعة عنوان URL لمحرك الأقراص والذي يتوافق مع list available drives
ملاحظة: يتم الحصول على رمز الوصول عبر تدفق بيانات اعتماد العميل
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 )أين
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 ()أمثلة إضافية:
ارجع إلى قسم أمثلة OneDrive لمزيد من الأمثلة.
يتم استخدام مكتبة مصادقة Microsoft (MSAL) لـ Python التي تأتي كاعتماد على الرمز المميز
يوضح المثال كيفية إنشاء فريق جديد تحت مجموعة يتوافق مع Create team
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
new_team = client . groups [ "{group-id}" ]. add_team (). execute_query_retry ()أمثلة إضافية:
ارجع إلى قسم الأمثلة لسيناريوهات أخرى
تدعم المكتبة onenote API من حيث المكالمات إلى دفاتر وأقسام وصفحات onenote الخاصة بالمستخدم
مثال: إنشاء صفحة جديدة
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 () يوضح المثال كيفية إنشاء مهمة مخطط جديدة تتوافق مع 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 ()سيتم تثبيت المكتبات التالية عند تثبيت مكتبة العميل:
Python القوي IDE Pycharm من Jetbrains .