23 lines
839 B
Python
23 lines
839 B
Python
import requests
|
|
from config import TENANT_ID, CLIENT_ID, CLIENT_SECRET
|
|
|
|
|
|
def get_access_token(scope: str = "https://graph.microsoft.com/.default"):
|
|
"""Request an application token from Microsoft identity platform."""
|
|
url = f"https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token"
|
|
data = {
|
|
"grant_type": "client_credentials",
|
|
"client_id": CLIENT_ID,
|
|
"client_secret": CLIENT_SECRET,
|
|
"scope": scope,
|
|
}
|
|
try:
|
|
res = requests.post(url, data=data, timeout=15)
|
|
res.raise_for_status()
|
|
token = res.json().get("access_token")
|
|
if not token:
|
|
raise RuntimeError("Token endpoint returned no access_token")
|
|
return token
|
|
except requests.RequestException as exc:
|
|
raise RuntimeError(f"Failed to obtain access token: {exc}") from exc
|