Я пытаюсь автоматизировать приглашение пользователей в Azure AD с помощью MS Graph API, но получаю сообщение об ошибке «Не удается прочитать JSON запрос полезной нагрузки».
Я получаю данные из система продажи билетов, извлекающая текущих пользователей AAD и различая обоих. Затем я буду помещать новые в AAD и обновлять их, чтобы включить их в группу безопасности AD посетителей.
Я создал Python Azure функцию, которая вызывает Graph API с запросами:
def insert_users(users_emails):
logging.info('Inserting new users in AAD')
token = generate_auth_token()
users_emails = users_emails[:2]
added_attendees = []
for email in users_emails:
req_body = {
"invitedUserEmailAddress" : email
, "inviteRedirectUrl" : "https://myapp.com"
}
body_length = sys.getsizeof(req_body)
req_headers = {
'Authorization' : 'Bearer {0}'.format(token)
, 'Content-Type' : 'application/json; charset=utf-8'
, 'Content-Length' : str(body_length)
}
response = requests.post(
'https://graph.microsoft.com/v1.0/invitations'
, headers = req_headers
, data = req_body
)
response = response.json()
logging.info(response)
added_attendees.append(email)
return added_attendees
API Graph отправляет следующее сообщение об ошибке:
{'error':
{'code': 'BadRequest',
'message': 'Unable to read JSON request payload. Please ensure Content-Type header is set and payload is of valid JSON format.',
'innerError':
{'request-id': '4ff5332d-d280-4b0d-9e04-a7359ab0e2fb', 'date': '2020-05-27T14:51:18'}
}
}
Я попытался добавить кодировку в заголовок Content-Type, но это не сработало. Я где-то читал, что Content-Length может быть полезным, поэтому я добавил и его, но безрезультатно.
Тесты проходят нормально в Postman, и я уже выполняю запрос POST для Azure AD API, чтобы получить Токен доступа, поэтому тогда тело запросов JSON обрабатывается нормально. Я также пробовал использовать одинарные или двойные кавычки в полезной нагрузке JSON, но это тоже не сработало.
Я считаю, что Graph API неправильно интерпретирует что-то, но я не могу понять, что именно.
Спасибо за вашу помощь!