Возможно ли создать собрание MS Teams с использованием MS Graph API версии v1.0?

#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 согласие администратора, и, наконец, вам нужно использоватьпоток учетных данных клиента на основе демона для получения токена доступа.