26 lines
947 B
Python
26 lines
947 B
Python
import datetime
|
|
from typing import Any
|
|
|
|
from azure.core.credentials import AccessToken, TokenCredential
|
|
from msgraph import GraphServiceClient
|
|
|
|
DEFAULT_SCOPE = "https://graph.microsoft.com/.default"
|
|
|
|
|
|
class StaticTokenCredential(TokenCredential):
|
|
"""Implementation of TokenCredential protocol to be provided to the MSGraph SDK client"""
|
|
|
|
def __init__(self, token: str):
|
|
self._token = token
|
|
|
|
def get_token(self, *scopes: str, **kwargs: Any) -> AccessToken:
|
|
# An expiration is required by MSGraph SDK. Set to 1 hour from now.
|
|
expires_on = int(datetime.datetime.now(datetime.timezone.utc).timestamp()) + 3600
|
|
return AccessToken(self._token, expires_on)
|
|
|
|
|
|
def get_client(token: str) -> GraphServiceClient:
|
|
"""Create and return a MSGraph SDK client, given the provided token."""
|
|
token_credential = StaticTokenCredential(token)
|
|
|
|
return GraphServiceClient(token_credential, scopes=[DEFAULT_SCOPE])
|