C# 功能应用程序通过图形API向团队频道发布消息-未经授权

C# 功能应用程序通过图形API向团队频道发布消息-未经授权,c#,azure-active-directory,azure-functions,microsoft-graph-api,microsoft-graph-teams,C#,Azure Active Directory,Azure Functions,Microsoft Graph Api,Microsoft Graph Teams,我正试图通过Microsoft Graph从Azure函数中删除 我已经按照步骤在Azure AD中注册了一个应用程序,授予该应用程序API权限(Group.ReadWrite.All),请求一个令牌,以便我的应用程序可以作为用户调用Graph,然后使用该承载令牌调用API 到目前为止,这适用于从Teams频道检索消息,调用将按预期返回来自该频道的所有消息。但是当我试图发布一条新消息时,我会收到一个未经授权的响应。我想我选择了正确的API权限,并获得了这些权限的许可,所以我看不出我错过了什么或弄

我正试图通过Microsoft Graph从Azure函数中删除

我已经按照步骤在Azure AD中注册了一个应用程序,授予该应用程序API权限(
Group.ReadWrite.All
),请求一个令牌,以便我的应用程序可以作为用户调用Graph,然后使用该承载令牌调用API

到目前为止,这适用于从Teams频道检索消息,调用将按预期返回来自该频道的所有消息。但是当我试图
发布一条新消息时,我会收到一个
未经授权的
响应。我想我选择了正确的API权限,并获得了这些权限的许可,所以我看不出我错过了什么或弄糟了什么

以下是我的AAD令牌请求的一些详细信息:

  • API(POST):
    https://login.microsoftonline.com/{TenantId}/oauth2/token
  • RestSharp参数:
    • 资源:
      https://graph.microsoft.com
    • 范围:
      https://graph.microsoft.com/.default
    • 客户端Id:{App Id的GUID}
    • 客户端密码{来自应用注册的密码}
    • 用户名:(我的授权用户电子邮件地址)
    • 密码:(我的授权用户密码)
这是归还的代币

{
  "token_type":"Bearer",
  "scope":"Chat.ReadWrite Group.ReadWrite.All TeamsActivity.Send User.Read",
  "expires_in":"3599",
  "ext_expires_in":"3599",
  "expires_on":"1581602086",
  "not_before":"1581598186",
  "resource":"https://graph.microsoft.com",
  "access_token":"eyJ0eXAiOiJKV1QiLCJub25jZSI6Ilp6REVFN..."
}
然后,我使用承载令牌头调用图形端点
/beta/teams/{Team ID}/channels/{Channel ID}/messages
。然后,我尝试通过将此正文添加到消息中来发布消息(RestSharp):

graphRequest.AddParameter(
“应用程序/json”,
“{\'body\':{\'content\':\'Hello World\'}”,
ParameterType.RequestBody);
以下是回应:

{
  "error": {
    "code": "Forbidden",
    "message": "Forbidden",
    "innerError": {
      "request-id": "487ce496-09dd-4385-98ba-f7c1f561b996",
      "date": "2020-02-13T13:27:32"
    }
  }
这是解码后的令牌

{
  "iat": 1581600138,
  "nbf": 1581600138,
  "exp": 1581604038,
  "acct": 0,
  "acr": "1",
  "aio": "{removed}",
  "amr": ["pwd"],
  "app_displayname": "{removed}",
  "appid": "{removed}",
  "appidacr": "1",
  "family_name": "test",
  "given_name": "AM",
  "ipaddr": "{removed}",
  "name": "AM Test",
  "oid": "{removed}",
  "platf": "14",
  "puid": "10032000842ED84F",
  "scp": "Chat.ReadWrite Group.ReadWrite.All TeamsActivity.Send User.Read",
  "sub": "{removed}",
  "tid": "{removed}",
  "unique_name": "{removed}.onmicrosoft.com",
  "upn": "{removed}.onmicrosoft.com",
  "uti": "{removed}",
  "ver": "1.0",
  "xms_tcdt": 1307525692
}

您是否在上解码您的令牌以确保您的令牌具有有效权限。我怀疑你的请求是否正确,因为你的代币请求似乎令人困惑。谢谢你这么快回复,我已删除GUID和地址,但这是已解码的令牌…它是否包含您所需的权限?很抱歉,我达到了评论框的字符限制,因此我已将其添加到主帖子中。它似乎包含Group.ReadWrite.All,这是此端点所需的权限。我应该提到的是,这个端点在BetaIs中,这个用户是这个团队/频道的成员吗?你是否解码了你的令牌以确保你的令牌具有有效的权限。我怀疑你的请求是否正确,因为你的代币请求似乎令人困惑。谢谢你这么快回复,我已删除GUID和地址,但这是已解码的令牌…它是否包含您所需的权限?很抱歉,我达到了评论框的字符限制,因此我已将其添加到主帖子中。它似乎包含Group.ReadWrite.All,这是此端点所需的权限。我应该提到这个端点是否在BetaIs中,这个用户是否是这个团队/渠道的成员?