在同一个应用程序权限调用中没有为多个用户创建事件



我已经在Azure目录中注册了具有应用程序权限的应用程序,并且我能够通过一次为单个用户使用相同的令牌来获取令牌并安排事件,但是当我在列表中添加多个与会者(vinay@yfdln.onmicrosoft.com,AdeleV@yfdln.onmicrosoft.com)时,它不会为另一个用户创建会议,我在

中没有提到
GraphServiceClient(accessToken).Users["AdeleV@yfdln.onmicrosoft.com"].Events.Request().AddAsync(@event);

和我收到的电子邮件说未能送达这些收件人或团体:Vinay@yfdln.onmicrosoft.com您的邮件未送达,因为收件人的电子邮件提供商拒绝了它。

和我也得到了一些错误的邮件

管理员诊断信息:

生成服务器:SA0PR19MB4602.namprd19.prod.outlook.com

Vinay@yfdln.onmicrosoft.com5.7.501服务不可用。从IP范围检测到垃圾邮件滥用。有关更多信息,请访问http://go.microsoft.com/fwlink/?LinkId=526653。年代(2017052602)[BYAPR19MB3063.namprd19.prod.outlook.com]

原始消息头:

Received: from SA0PR19MB4602.namprd19.prod.outlook.com
([fe80::d4d8:a608:e081:3249]) by SA0PR19MB4602.namprd19.prod.outlook.com
([fe80::d4d8:a608:e081:3249%7]) with mapi id 15.20.5373.018; Tue, 28 Jun 2022
13:43:23 +0000
MIME-Version: 1.0
Content-Type: text/plain
Date: Tue, 28 Jun 2022 13:43:23 +0000
Message-ID:
<SA0PR19MB4602896A05ED8C22B925567688B89@SA0PR19MB4602.namprd19.prod.outlook.com>
Subject: Schedule From .Net

代码
public static async Task<Event> CreateEvent(string accessToken)
{
Event event1 = new Event();
var @event = new Event
{
Subject = "Schedule From .Net",
Body = new ItemBody
{
ContentType = BodyType.Html,
Content = "Test Schedule"
},
Start = new DateTimeTimeZone
{
DateTime = "2022-07-10T12:00:00",
TimeZone = "Pacific Standard Time"
},
End = new DateTimeTimeZone
{
DateTime = "2022-07-10T14:00:00",
TimeZone = "Pacific Standard Time"
},
Location = new Location
{
DisplayName = "OR1"
},
Attendees = new List<Attendee>()
{
new Attendee
{
EmailAddress = new EmailAddress
{
Address = "vinay@yfdln.onmicrosoft.com",
Name = "Vinay"
},
Type = AttendeeType.Required
},
new Attendee
{
EmailAddress = new EmailAddress
{
Address = "AdeleV@yfdln.onmicrosoft.com",
Name = "Adelev"
},
Type = AttendeeType.Required
}
},
TransactionId = Guid.NewGuid().ToString()
};
try
{
event1 = await GraphServiceClient(accessToken).Users["AdeleV@yfdln.onmicrosoft.com"].Events.Request().AddAsync(@event);

}
catch (Exception ex)
{
}
return event1;
}

有没有人可以请你检查并建议我们如何通过使用相同的方式同时安排多个用户。

是否有选项可以更改下面的代码以在Users[]数组中添加多个电子邮件

GraphServiceClient(accessToken).Users["AdeleV@yfdln.onmicrosoft.com"].Events.Request().AddAsync(@event);

GraphServiceClient(accessToken).Users["AdeleV@yfdln.onmicrosoft.com,AdeleV@yfdln.onmicrosoft.com"].Events.Request().AddAsync(@event);

,但这会产生如下错误

Code: ResourceNotFound
Message: Resource could not be discovered.
Inner error:
AdditionalData:
date: 2022-06-28T14:41:33
request-id: 41cf2d89-de6d-44df-b42f-1e11d2fe430e
client-request-id: 41cf2d89-de6d-44df-b42f-1e11d2fe430e
ClientRequestId: 41cf2d89-de6d-44df-b42f-1e11d2fe430e

请告诉我们该怎么叫

的问候Srikanth

对不起,请按照下面的代码进行测试。

我再次确认了你的代码,并检查了官方api文档,我注意到你写的是await GraphServiceClient(accessToken).Users["AdeleV@yfdln.onmicrosoft.com"].Events.Request().AddAsync(@event),而样本代码是await graphClient.Me.Calendars["{calendar-id}"].Events.Request().AddAsync(@event);,所以你可能需要使用代码GraphServiceClient(accessToken).Users["AdeleV@yfdln.onmicrosoft.com"].Calendars["{calendar-id}"].Events.Request().AddAsync(@event);来代替。

public void CreateEvent()
{
var scopes = new[] { "https://graph.microsoft.com/.default" };
var tenantId = "your_tenant_name.onmicrosoft.com";
var clientId = "azure_ad_app_id";
var clientSecret = "client_secret";
var clientSecretCredential = new ClientSecretCredential(
tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

var @event = new Event
{
Subject = "Schedule From .Net",
Body = new ItemBody
{
ContentType = BodyType.Html,
Content = "Test Schedule"
},
Start = new DateTimeTimeZone
{
DateTime = "2022-07-10T12:00:00",
TimeZone = "Pacific Standard Time"
},
End = new DateTimeTimeZone
{
DateTime = "2022-07-10T14:00:00",
TimeZone = "Pacific Standard Time"
},
Location = new Location
{
DisplayName = "OR1"
},
Attendees = new List<Attendee>()
{
new Attendee
{
EmailAddress = new EmailAddress
{
Address = "vinay@yfdln.onmicrosoft.com",
Name = "Vinay"
},
Type = AttendeeType.Required
},
new Attendee
{
EmailAddress = new EmailAddress
{
Address = "AdeleV@yfdln.onmicrosoft.com",
Name = "Adelev"
},
Type = AttendeeType.Required
}
},
TransactionId = Guid.NewGuid().ToString()
};
var res = await graphClient.Users["userId"].Calendars["{calendar-id}"].Events.Request().AddAsync(@event);
}