У меня есть приложение, которое должно подключаться к Graph API с учетными данными моего клиента для получения данных.
Чтобы сгенерировать учетные данные, я сделал следующее (python код
from msal import PublicClientApplication
AUTHORITY = 'https://login.microsoftonline.com/common'
MICROSOFT_LOGIN_ADDRESS = 'https://login.microsoftonline.com'
def generate_token(client_id, scopes):
app = PublicClientApplication(client_id, authority=AUTHORITY)
flow = app.initiate_device_flow(scopes=scopes)
print(flow['message'])
token = app.acquire_token_by_device_flow(flow)
return token
token = generate_token(client_id, scopes)
refresh_token = token['refresh_token']
request_url =f"{MICROSOFT_LOGIN_ADDRESS}/{token['id_token_claims']['tid']}/oauth2/token
, затем я получаю refresh_token
и request_url
для получения access_token
:
payload = { "client_id": client_id,
"scope": scopes,
"client_secret": client_secret,
"grant_type": "refresh_token",
"refresh_token": refresh_token,
}
headers = {"Content-Type": "application/x-www-form-urlencoded"}
response = requests.post(url=request_url,
headers=headers,
data=payload)
access_token = json.loads(response.text)['access_token']
Это работало нормально, пока администратор клиента не изменил свой пароль, и я не начал получать ошибку:
"AADSTS50173: The provided grant has expired due to it being revoked, a fresh auth token is needed. The user might have changed or reset their password.״
Интересно, как правильно получить refre sh токен