如何通过 REST 从应用程序正确创建 Teams Message

How to create Teams Message via REST from an Application properly

我有一个 c# 服务,该服务 运行 在蔚蓝云中的某个地方,没有用户界面。一些特定事件应该触发新消息到团队频道。

根据此文档,创建消息 https://docs.microsoft.com/en-us/graph/api/channel-post-messages?view=graph-rest-1.0&tabs=http 仅受委托帐户支持,应用程序令牌不支持。

如何在没有特定用户帐户且没有云登录界面的情况下为我的服务应用程序创建委托令牌? 哪个身份验证提供程序是正确的? https://docs.microsoft.com/en-us/graph/sdks/choose-authentication-providers?context=graph%2Fapi%2F1.0&view=graph-rest-1.0&tabs=CS

正如您在问题中提到的:chatMessage,仅支持 Delegated Permission 类型。

委托权限类型到底是什么? 使用来自 signed-in 的委托授权指定 scope-based 访问权限的权限。 强调上述观点的原因是 - 对于委派权限,我们需要 用户帐户

的上下文

回到你的问题:

如何在没有特定用户帐户的情况下为我的服务应用程序创建委托令牌

您可以在没有特定用户帐户的情况下获得令牌,但这无助于您的 cause.In 为了克服这个问题,我建议创建服务帐户 - 此帐户对 teams.Part 其中 2 个问题表明哪个提供者可以在没有登录提示的情况下提供帮助。

步骤包括:

  • 注册您的应用。
  • 在您的应用上配置 Microsoft Graph 的权限。
  • 获得管理员同意。
  • 获取访问令牌。
  • 使用访问令牌调用 Microsoft Graph。

详细步骤包含在此处的文章中:https://docs.microsoft.com/en-us/graph/auth-v2-service

没有云端登录界面

现在您可以使用以下选项:

Microsoft identity platform and OAuth 2.0 Resource Owner Password Credentials

在此提供商中,您将传递服务帐户的信用。

POST {tenant}/oauth2/v2.0/token
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=<YOUR CLIENT ID>
&scope=user.read%20openid%20profile%20offline_access
&username=<YOUR USERNAME>
&password=<YOUR PASSWORD>
&grant_type=password

您可以通过上述请求为您的服务帐户生成令牌,应用程序可以使用聊天消息 API。