图 API 调用问题 - POST 事件

Graph API Call Issues - POST Event

我在尝试在特定用户日历中创建活动时遇到了问题运行。

这个调用工作正常:POST https://graph.microsoft.com/v1.0/me/events

但是当我更改 API 调用以包含其他用户详细信息时,它会抛出此错误:“在商店中找不到指定的对象。”

我已经在 Azure 上创建了一个应用程序并分配了所有必要的权限。

应用权限

错误:

如果我遗漏了什么,有人可以帮忙吗?

请注意,当您使用 /me 时,这意味着您正在使用委托 api 权限调用 ms 图表 api,该权限通过输入用户 name/password 进行验证,使用这种身份验证,您只能对自己的帐户进行操作。当您想为 /users/user_id/xxx 等其他用户执行操作时,您需要申请 api 权限。这就是 api documentDelegated and Application 中显示 api 权限的原因。一个用于个人,另一个用于所有用户。

当我们需要获取包含应用程序权限的访问令牌时,我们需要使用客户端凭证流。该流程用于daemon应用,因为这种应用没有用户交互操作,所以我们只能针对这种场景使用应用权限。正如您所看到的,它将为应用程序提供“非常大的能力”(允许应用程序为您的租户中的任何用户 create/change/delete 项目),因此我们需要谨慎使用应用程序权限。

回到案例,您可以按照this section生成访问令牌并调用api。您还可以在代码中使用图形 SDK 来调用 api.

using Azure.Identity;
using Microsoft.Graph;
public async Task<string> testAsync() {
    var scopes = new[] { "https://graph.microsoft.com/.default" };
    var tenantId = "tenant_name.onmicrosoft.com";
    var clientId = "azure_ad_clientid";
    var clientSecret = "client_secret";
    var clientSecretCredential = new ClientSecretCredential(
        tenantId, clientId, clientSecret);
    var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
    var a = await graphClient.Users["user_id"].Request().GetAsync();
    return a.DisplayName;
}