Microsoft 365 e Microsoft Graph Library para Python
Use Pip:
pip install Office365-REST-Python-Client
Como alternativa, a versão mais recente pode ser instalada diretamente via Github:
pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git
Para os exemplos a seguir, credenciais relevantes podem ser encontradas no portal do Azure.
Etapas para acessar:
O cliente ClientContext
fornece o suporte para um Legacy SharePoint Rest e OneDrive for Business Rest APIs, a lista de versões suportadas:
Os seguintes fluxos de autenticação são suportados:
Este método de autenticação é compatível com o SharePoint On Premises e ainda é um modelo relevante em ambos os sharePoint no local como o SharePoint on-line, os seguintes métodos estão disponíveis:
ClientContext.with_credentials(client_credentials)
ClientContext.with_client_credentials(client_id, client_secret)
Uso:
client_credentials = ClientCredential('{client_id}','{client_secret}')
ctx = ClientContext('{url}').with_credentials(client_credentials)
Documentação:
Exemplo: Connect_with_app_principal.py
Uso:
user_credentials = UserCredential('{username}','{password}')
ctx = ClientContext('{url}').with_credentials(user_credentials)
Exemplo: Connect_with_user_credential.py
Documentação:
Exemplo: Connect_with_client_certificate.py
para login interativamente, ou seja, através de um navegador local
Pré -requisito:
No portal do Azure, configure o URI de redirecionamento do seu "aplicativo móvel e de desktop" como
http://localhost
.
Exemplo: Connect_Interactive.py
Uso:
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 )
Existem duas abordagens disponíveis para realizar consultas de API:
ClientContext class
- onde você segira recursos do SharePoint, como Web
, ListItem
e etc (recomendado) 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' ]))
ou alternativamente via encadeamento de método (também conhecido como interface fluente):
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
- onde você constrói consultas de descanso (e nenhum modelo está envolvido)
O exemplo demonstra como ler as propriedades 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 ))
A lista de exemplos:
Trabalhando com arquivos
Trabalhando com listas e itens de lista
Consulte a seção Exemplos para outros cenários
Atualmente, o suporte a ambientes do SharePoint não padrão está sendo implementado. Atualmente suportado:
Para ativar a autenticação aos pontos de extremidade altos do GCC, adicione o parâmetro environment='GCCH'
ao ligar para a ClientContext class
com .with_user_credentials
, .with_client_credentials
ou .with_credentials
Exemplo:
from office365 . sharepoint . client_context import ClientContext
client_credentials = ClientCredential ( '{client_id}' , '{client_secret}' )
ctx = ClientContext ( '{url}' ). with_credentials ( client_credentials , environment = 'GCCH' )
A lista de APIs suportadas:
Como as APIs de REST do Outlook estão disponíveis no gráfico da Microsoft e no ponto final da API do Outlook, os seguintes clientes estão disponíveis:
GraphClient
que tem como alvo a versão do Outlook API v2.0
( preferível hoje em dia, consulte a transição para a API REST do Outlook com base no gráfico da Microsoft para obter detalhes)OutlookClient
, que tem como alvo o Outlook API v1.0
versão (não recomendado para uso, pois a versão v1.0
está sendo descontinuada.)A Microsoft Authentication Library (MSAL) para Python, que é uma dependência é usada como uma biblioteca padrão para obter tokens para chamar a API do Microsoft Graph.
Usando a Microsoft Authentication Library (MSAL) para Python
NOTA: O Token de acesso está sendo adquirido via fluxo de credenciais do cliente nos exemplos fornecidos. Outras formas de aquisição de token podem ser encontradas aqui: 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 )
Mas em termos de autenticação da API do Microsoft Graph, outras bibliotecas compatíveis com especificações da OAuth, como o ADAL, também são suportadas.
Usando Adal Python
Uso
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 )
O exemplo demonstra como enviar um email via ponto de extremidade do gráfico da Microsoft.
NOTA: O Token de acesso está sendo adquirido via fluxo de credencial do cliente
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 ()
Exemplos e cenários adicionais:
Consulte a seção Exemplos para outros cenários
Referência da API do gráfico ONEDRIVE
A Microsoft Authentication Library (MSAL) para Python, que é uma dependência é usada para obter token
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
O exemplo demonstra como enumerar e imprimir o URL da unidade, que corresponde à list available drives
NOTA: O Token de acesso está sendo adquirido via fluxo de credencial do cliente
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 )
onde
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 ()
Exemplos adicionais:
Consulte a seção OneDrive Exemplos para obter mais exemplos.
A Microsoft Authentication Library (MSAL) para Python, que é uma dependência é usada para obter token
O exemplo demonstra como criar uma nova equipe sob um grupo que corresponda para Create team
from office365 . graph_client import GraphClient
client = GraphClient ( acquire_token_func )
new_team = client . groups [ "{group-id}" ]. add_team (). execute_query_retry ()
Exemplos adicionais:
Consulte a seção Exemplos para outros cenários
A biblioteca suporta a API ONENOTE em termos de chamadas para os notebooks, seções e páginas de um usuário em uma conta pessoal ou organizacional
Exemplo: Crie uma nova página
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 ()
O exemplo demonstra como criar uma nova tarefa de planejador que corresponda para Create plannerTask
Endpoint:
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 ()
As seguintes bibliotecas serão instaladas quando você instalar a biblioteca do cliente:
Pycharm
poderoso Python IDE de Jetbrains
.