#python #azure-active-directory #microsoft-graph-api #microsoft-teams
#python #azure-active-directory #microsoft-graph-api #microsoft-teams
Вопрос:
Я пытаюсь создать собрание MS Teams с использованием MS Graph API. Документально подтверждено, что для создания собрания делегируйте «OnlineMeetings.Разрешение ReadWrite» должно быть назначено приложению Azure.
Я назначил это разрешение, но получаю ответ:
{'error': {'code': 'Forbidden', 'message': '', 'innerError': {'request-id': 'baa2940f-6b8e-45c1-8ea1-770792266458', 'date': '2021-01-15T10:00:14', 'client-request-id': 'baa2940f-6b8e-45c1-8ea1-770792266458'}}}
Вот мой код:
meeting = {
"startDateTime" : s_date,
"endDateTime" : e_date,
"subject" : subject
}
meeting_response = client.post("/users/{user_id}/onlineMeetings",json.dumps(meeting),headers=
{'Content-Type': 'application/json'})
meeting = json.loads(meeting_response.text)
print(meeting)
Я могу создать собрание таким же образом, используя Graph Explorer
Что я делаю не так или это ошибка со стороны MS?
Комментарии:
1. Вы пытаетесь использовать делегированные или разрешения приложений?
2. Похоже, возникла проблема с токеном доступа. Как вы генерируете токен доступа? Вы добавляете токен доступа к запросу? Начиная с его разрешения делегировать, вы пытались предоставить «grant_type:client_credentials».
3. Хорошо, похоже, что 1.0 API может создавать собрания для себя, используя конечную точку «/me /onlineMeetings». Я смог создать собрание с помощью graph Explorer, потому что я вошел в систему с тем же пользователем, для которого пытался создать собрание (использовал его идентификатор в своем запросе). Я смог создать собрание от имени пользователя с помощью бета-API. Для этого вам также необходимо создать и предоставить политику доступа к приложению пользователю. docs.microsoft.com/en-us/powershell/module/skype /…
Ответ №1:
Да, вы правы, как вы сказали в своем комментарии: v1.0
конечная точка может вызывать /me
api только для создания собрания для себя. Если вы хотите создать собрание для других, вы должны использовать Beta
конечную точку, а затем вызвать /users
api. (При использовании бета-версии, согласно документации: администраторы должны создать политику доступа к приложению и предоставить ее пользователю, разрешив приложению, настроенному в политике, создавать онлайн-собрание от имени этого пользователя (идентификатор пользователя указан в пути запроса).)
/users
Пожалуйста, обратите внимание: поскольку вызов выполняется OnlineMeetings.Read.All
без входа пользователя в систему, то есть приложение действует как собственный объект, а не представляет конкретного пользователя, поэтому вы должны предоставить приложению разрешение application, а затем предоставить разрешение grant согласие администратора, и, наконец, вам нужно использоватьпоток учетных данных клиента на основе демона для получения токена доступа.