Невозможно получить информацию о пользователе в токене доступа B2C
def get_access_token(authorization_code):
token_url = "https://login.microsoftonline.com/xxxx-xxxx-xxxx-xxxx-xxxxcxxxxe/oauth2/v2.0/token"
redirect_uri = "https://localhost/api/oauth2/callback"
client_id = "xxxxxx-xxx-xxxx-xxx-xxxxxx"
client_secret = "xxxx~xxxxx~xxxx_xxxxxxxxx"
scope = "https://graph.microsoft.com/.default"
headers = {'Content-Type' : 'application/x-www-form-urlencoded'}
token_data = {
'grant_type': 'client_credentials',
'code': authorization_code,
'redirect_uri': redirect_uri,
'client_id': client_id,
'client_secret': client_secret,
'scope': scope,
}
response = requests.post(token_url, headers = headers, data=token_data)
token_json = response.json()
if 'access_token' in token_json:
return token_json['access_token']
else:
raise Exception(f"Error fetching access token: {token_json.get('error_description', 'Unknown error')}")
Я не могу найти никакой информации о пользователе в носителе, который предоставляет Microsoft. Конечная точка токена кажется правильной, и я получаю всю информацию о пользователе в Microsoft Graph Explorer, но не могу найти ее в моем приложении django.
Ошибка связана с тем, что вы используете поток кода авторизации, но передаете значение параметра как учетные данные клиента для grant_type.
Изначально я зарегистрировал Microsoft Entra ID Application в B2C-арендаторе:
Предоставлено Делегированный тип User.Read.All
Разрешение API:
Для устранения ошибки измените код l:
Чтобы получить code
, я выполнил следующий запрос авторизации в браузере:
https://login.microsoftonline.com/<b2c_tenant_id>/oauth2/v2.0/authorize?
&client_id=<app_id>
&client_secret = <client_secret>
&redirect_uri= http://localhost:5000
&response_type=code
&response_mode=query
&scope= https://graph.microsoft.com/.default
Ответ: