具有AAD应用程序ID的应用程序无权生成有关[.]的通知致收件人

Application with AAD App Id is not authorized to generate notifications about [...] to the recipient(具有AAD应用程序ID的应用程序无权生成有关[.]的通知致收件人)
本文介绍了具有AAD应用程序ID的应用程序无权生成有关[.]的通知致收件人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

早上好, 我正在尝试使用Microsoft图形的API在Microsoft Teams源中发送通知。

我已经创建了一个C#应用程序,并按照官方指南给出了所有授权: Here

但是我不能把事情做完。所以我选择了让事情变得简单一点,只使用Postman就剪掉了整个C#应用程序。结果是我收到了相同的错误.

(尝试邮递员1)->;这是我的请求正文:

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/beta/users/{MY_USER_ID}/teamwork/installedApps/{APP_ID}"
    },
    "activityType": "taskCreated",
    "previewText": {
        "content": "New Task Created"
    },
    "templateParameters": [
        {
            "name": "taskId",
            "value": "Task 12322"
        }
    ]
}

这是我的电话:

https://graph.microsoft.com:443/beta/users/{MY_USER_ID}/teamwork/microsoft.graph.sendActivityNotification

结果是:

{
    "error": {
        "code": "Forbidden",
        "message": "Application with AAD App Id '{APP_ID}' is not authorized to generate notifications about 'https://graph.microsoft.com/beta/users/{MY_USER_ID}/teamwork/installedApps/{APP_ID}' to the recipient.",
        "innerError": {
            "date": "{date}",
            "request-id": "{request-id}",
            "client-request-id": "{client-request-id}"
        }
    }
}

(尝试邮递员2)->;这是我的请求正文(与第一个相同):

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/beta/users/{MY_USER_ID}/teamwork/installedApps/{APP_ID}"
    },
    "activityType": "taskCreated",
    "previewText": {
        "content": "New Task Created"
    },
    "templateParameters": [
        {
            "name": "taskId",
            "value": "Task 12322"
        }
    ]
}

这是我的电话(改变的事物):

https://graph.microsoft.com/beta/users/{MY_USER_ID}/teamwork/installedApps/{APP_ID}

这是错误:

{
    "error": {
        "code": "UnknownError",
        "message": "",
        "innerError": {
            "date": "{date}",
            "request-id": "{request-id}",
            "client-request-id": "{client-request-id}"
        }
    }
}

我认为第一个电话是正确的,但我不确定… 我已经授予了上面链接的指南所需的权限(TeamsActivity.Send‘Delegated’和TeamsActivity.Send‘application’)。

我确信我错过了什么,但从GraphExplorer我甚至无法测试正确的调用/了解我错过了哪个权限

提前感谢, 乔瓦尼

-编辑1-

应Carl赵在我的访问令牌中的要求,我不得不审查一些数据,但我认为它将以同样的方式读取:

{
    "typ": "JWT",
    "nonce": "FHxXnlAuHU14c4czPflNLrniH-4d-4ZdRNawgEx6LQg",
    "alg": "RS256",
    "x5t": "nOo3ZDrODXEK1jKWhXslHR_KXEg",
    "kid": "nOo3ZDrODXEK1jKWhXslHR_KXEg"
}.{
    "aud": "00000003-0000-0000-c000-000000000000",
    "iss": "https://sts.windows.net/9e892716-96e0-4bf4-a58a-e43212bfab33/",
    "iat": 1614156685,
    "nbf": 1614156685,
    "exp": 1614160585,
    "acct": 0,
    "acr": "1",
    "acrs": [
        "urn:user:registersecurityinfo",
        "urn:microsoft:req1",
        "urn:microsoft:req2",
        "urn:microsoft:req3",
        "c1",
        "c2",
        "c3",
        "c4",
        "c5",
        "c6",
        "c7",
        "c8",
        "c9",
        "c10",
        "c11",
        "c12",
        "c13",
        "c14",
        "c15",
        "c16",
        "c17",
        "c18",
        "c19",
        "c20",
        "c21",
        "c22",
        "c23",
        "c24",
        "c25"
    ],
    "aio": "E2ZgYBBXWFm5tc8nMm5J68RHD6qmJ31f8GpGeqzcg8/+XlvTE40B",
    "amr": [
        "pwd"
    ],
    "app_displayname": "NotificationSender",
    "appid": "{APP_ID}",
    "appidacr": "0",
    "family_name": "{My_surname}",
    "given_name": "{My_name}",
    "idtyp": "user",
    "ipaddr": "{IP}",
    "name": "{My_surname} {My_name}",
    "oid": "{MY_USER_ID}",
    "platf": "14",
    "puid": "10032001002D8362",
    "rh": "0.AREAFieJnuCW9EuliuQyEr-rM44Tv1nRFotKsOAymqy2XUwRALk.",
    "scp": "email IdentityProvider.Read.All IdentityProvider.ReadWrite.All IdentityRiskEvent.Read.All IdentityRiskEvent.ReadWrite.All IdentityRiskyUser.Read.All IdentityRiskyUser.ReadWrite.All IdentityUserFlow.Read.All IdentityUserFlow.ReadWrite.All Notifications.ReadWrite.CreatedByApp openid profile TeamsActivity.Read TeamsActivity.Send TeamsApp.ReadWrite User.Read User.ReadBasic.All UserNotification.ReadWrite.CreatedByApp",
    "sub": "EmlIIgfTtCx92uXpG26JS3A4s30BF-L_q08y7WpK45g",
    "tenant_region_scope": "EU",
    "tid": "9e892716-96e0-4bf4-a58a-e43212bfab33",
    "unique_name": "{My_Mail}",
    "upn": "{My_Mail}",
    "uti": "hfEx4TU7lEOdFnLyO38VAA",
    "ver": "1.0",
    "wids": [
        "7be44c8a-adaf-4e2a-84d6-ab2649e08a13",
        "158c047a-c907-4556-b7ef-446551a6b5f7",
        "baf37b3a-610e-45da-9e62-d9d1e5e8914b",
        "c4e39bd9-1100-46d3-8c65-fb160da0071f",
        "9b895d92-2cd3-44c7-9d02-a6ac2d5ea5c3",
        "b79fbf4d-3ef9-4689-8143-76b194e85509"
    ],
    "xms_st": {
        "sub": "xFCFf1A82XccwsRgTd7olVqOBVUE9pZ5d6QDyWjbojc"
    },
    "xms_tcdt": 1428499913
}.[Signature]

推荐答案

很抱歉,我必须将此作为答案发布,因为我没有足够的代表发表评论。与其说是答案,不如说是指南。

先决条件:您的C#应用程序已在Azure中注册,具有TeamsActivite.Send的图形API权限

我通过执行以下操作使其正常工作:

  1. 使用团队"Developer Portal"应用程序,我转到";apps";选项卡并添加了一个新应用程序。在应用程序功能下,我添加了活动摘要通知,然后作为应用程序包发布(稍后要作为组织应用程序上载,您将在下一步中了解原因)。

  2. 由于某种原因,我在上一步中输入的应用程序(客户端)ID没有放入我的清单文件中(可能是因为我没有添加SSO提供程序?我不确定)。因此,我修改了团队应用程序清单以包括我的C#应用程序的客户端ID,添加了以下内容:

    webApplicationInfo;:{ ";id";:";{My C#应用程序的客户端ID}";, 应用程序权限(&Q;):[ 团队活动。发送(&Q); ] )

  3. 我再次压缩文件并将包上载到Teams admin center。

  4. 然后,我能够安装我已上载到我的团队应用程序的自定义应用程序。

  5. 安装该应用程序后,我尝试测试我的C#应用程序,但id和outalid值都不适用于我的";app_ID";,得到与您提到的相同的异常。因此,我打开Graph Explorer,并使用以下查询找到id:https://graph.microsoft.com/beta/me/teamwork/installedApps?$expand=teamsApp(它将是一个长字符串,而不是GUID)。

一旦我使用该ID,一切都会正常工作。

根据我的理解,团队应用程序和您的C#应用程序本质上是两个不同的注册应用程序,它们使用您的C#应用程序的客户端ID绑定在一起,我认为这只是出于身份验证的目的。我猜如果团队应用程序的清单中没有C#应用程序的客户端ID,它就无法进行身份验证,这似乎是我的问题。另外,请确保您的收件人安装了应用程序,因为这也可能导致此异常。

这篇关于具有AAD应用程序ID的应用程序无权生成有关[.]的通知致收件人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)