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
обеспечивает поддержку Legacy SharePoint Rest и OneDrive для API Business Rest, список поддерживаемых версий:
Поддерживаются следующие потоки авторов:
Этот метод 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 настройте 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
- где вы строите запросы REST (и не связана с моделью)
Пример демонстрирует, как читать 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. В настоящее время поддерживается:
Чтобы включить аутентификацию в GCC Высокие конечные точки, добавьте параметр 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' )
Список поддерживаемых API:
Поскольку API Outlook Rest доступны как в Microsoft Graph, так и в конечной точке API Outlook, доступны следующие клиенты:
GraphClient
, которая нацелена на версию Outlook API v2.0
( предпочтительнее в настоящее время, обратитесь к переходу на API Microsoft Graph Outlook Rest для получения подробной информации)OutlookClient
, которая нацелена на версию Outlook API v1.0
(не рекомендуется для использования, поскольку версия v1.0
устарела.)Библиотека аутентификации Microsoft (MSAL) для Python, которая используется в качестве зависимости в качестве библиотеки по умолчанию для получения токенов для вызова API Microsoft Graph.
Использование библиотеки аутентификации 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 Graph.
Примечание. Доступ токен получает приобретения с помощью клиентского потока учетных данных
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 ()
Дополнительные примеры и сценарии:
Обратитесь к разделу примеров для других сценариев
Ссылка на API onedrive Graph
Библиотека аутентификации 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
Endpoint
Примечание. Доступ токен получает приобретения с помощью клиентского потока учетных данных
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 ()
Дополнительные примеры:
Обратитесь к разделу примеров для других сценариев
Библиотека поддерживает 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
.