通过 API 创建 Microsoft 团队会议

时间:2021-03-17 11:09:05

标签: azure-active-directory microsoft-graph-api microsoft-teams

在 Azure Active Directory 中,我注册了一个新应用并授予它 Read and create online meetings 权限。我已授予管理员许可,现在我正在尝试通过命令行创建会议。

我为应用生成了一个客户端密码。

然后我使用我的租户 GUID、应用程序的客户端 ID 和我生成的客户端密码请求访问令牌。这给了我一个 jwt。当我在角色中解码 JWT 时,我可以看到 "OnlineMeetings.ReadWrite.All",这让我希望我可以使用此不记名令牌实际创建会议。

enter image description here

然后我向 https://graph.microsoft.com/v1.0/users/<my-user-guid>/onlineMeetings 发送一个 POST 请求 具有以下正文:

  {
   "startDateTime":"2021-03-16T14:33:30.8546353-07:00",
   "endDateTime":"2021-03-16T15:03:30.8566356-07:00",
   "subject":"Application Token Meeting",
   "participants": {
     "organizer": {
       "identity": {
         "user": {
           "id": "<my-user-guid>"
          }
        }
      }
    }
  }

响应返回

"code": "Forbidden",
"message": "Application does not have permission to Create online meeting on behalf of this user.",

我错过了什么吗?

编辑: 正如一些评论建议我应该创建一个应用程序访问策略。所以我正在关注要求我Connect using admin credentials

当我使用我的帐户运行 Connect-MicrosoftTeams -Credential $userCredential 时,它失败并显示以下错误:

Connect-MicrosoftTeams: accessing_ws_metadata_exchange_failed: Accessing WS metadata exchange failed: Response status code does not indicate success: 406 (NotAcceptable).
Connect-MicrosoftTeams: accessing_ws_metadata_exchange_failed: Accessing WS metadata exchange failed
Connect-MicrosoftTeams: Response status code does not indicate success: 406 (NotAcceptable).
Connect-MicrosoftTeams: : Unknown error

但这正是让我困惑的地方。我真的不知道我是否正在尝试使用正确的帐户登录。我在 azure 上使用我的个人帐户,这(afaik)不是 Skype for business 的商业帐户。 我正在运行命令以登录 azure 门户的 PowerShell 界面。我应该在我的本地机器上运行它吗? 我想我还没有完全理解需要配置的所有活动部件。 我可以在 azure 门户界面的某处添加这些应用程序访问策略吗?

1 个答案:

答案 0 :(得分:0)

根据 api documentation,确保您向应用程序授予 OnlineMeetings.ReadWrite.All application permission。然后您需要使用 client credential flow 来获取访问令牌。

请注意,当您使用应用程序令牌创建在线会议时,管理员必须创建一个 application access policy 并将其授予用户,授权策略中配置的应用代表该用户创建在线会议(请求路径中指定的用户 ID)。