File size: 1,456 Bytes
345ca6f
 
 
 
 
 
 
 
 
 
 
 
 
 
d5c5462
345ca6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import os
import msal
import requests
from fastapi import FastAPI, HTTPException, Request
from fastapi.responses import HTMLResponse, RedirectResponse
from dotenv import load_dotenv

load_dotenv()

# Configuration
CLIENT_ID = os.getenv('CLIENT_ID_2')
CLIENT_SECRET = os.getenv('CLIENT_SECRET_2')
TENANT_ID = os.getenv('TENANT_ID')
AUTHORITY = f"https://login.microsoftonline.com/common"
REDIRECT_URI = 'https://omkar008-micrososft-authentication.hf.space/getAToken'
SCOPES = ['Mail.Read']

app = FastAPI()


@app.get("/")
def read_root(request: Request):
    # Generate the authorization URL
    app_instance = msal.ConfidentialClientApplication(
        CLIENT_ID,
        CLIENT_SECRET,
        authority=AUTHORITY
    )
    auth_url = app_instance.get_authorization_request_url(SCOPES, redirect_uri=REDIRECT_URI)
    return {"auth_url":auth_url}

@app.get("/getAToken")
def get_a_token(request: Request, code: str):
    app_instance = msal.ConfidentialClientApplication(
        CLIENT_ID,
        CLIENT_SECRET,
        authority=AUTHORITY
    )

    # Exchange the authorization code for an access token
    result = app_instance.acquire_token_by_authorization_code(code, SCOPES, redirect_uri=REDIRECT_URI)
    print(result)
    if "access_token" in result:
        access_token = result['access_token']
        print(access_token)
        if not access_token:
            return {"Access Token Not found !!"}

    return {"access_token":access_token}