c# - 无法在 MS Graph National US Cloud 中创建事件或团队成员
问题描述
我正在将应用程序与 MS Graph API 集成。该应用程序将使用文件和文件夹创建团队,并在用户的日历上创建事件。在我们的商业 Graph 环境中一切正常,但是当我们针对我们的美国国家云环境 (graph.microsoft.us) 尝试所有相同的请求时,我们遇到了问题。
发布到 /teams/{team id}/members 每次都会返回 404。该请求的格式与示例完全相同:https ://docs.microsoft.com/en-us/graph/api/team-post-members?view=graph-rest-1.0&tabs=http
每次发布给我/事件或 /users/{userPrincipalName}/events 都会返回 400。我什至尝试手动格式化请求,就像更改日期和地址的示例一样无济于事:https ://docs.microsoft.com/en-us/graph/api/user-post-events?view=graph-rest- 1.0&tabs=http
我可以发布各种其他请求。例如:应用程序创建一个团队,将文件夹添加到默认频道,并在尝试执行失败的请求之前修改这些文件夹的权限。
我使用 API 的 v1.0 或 beta 版本收到错误。
我不确定这是否重要,但我正在使用带有 C# 的 .NET 4.7.2 中的 WebClient 类。
失败的事件请求:
POST https://graph.microsoft.us/beta/users/<my email>/calendar/events
{
"subject": "Some - Meeting - Name",
"body": {
"contentType": "HTML",
"content": ""
},
"start": {
"dateTime": "2021-07-08T21:00:00",
"timeZone": "UTC"
},
"end": {
"dateTime": "2021-07-08T22:00:00",
"timeZone": "UTC"
},
"location": {
"displayName": "Virtual"
},
"attendees": [
{
"emailAddress": {
"address": "<My email>",
"name": "<My name>"
},
"type": "required"
},
{
"emailAddress": {
"address": "<colleague email>",
"name": "<colleague name>"
},
"type": "required"
}
],
"allowNewTimeProposals": true,
"isOnlineMeeting": true,
"onlineMeetingProvider": "teamsForBusiness",
"transactionId": "fa3b8eb3-02b0-435a-ab29-5019cab134eb"
}
回复
request-id: 51351ca3-9354-4eae-8d8c-d09f168594ab
client-request-id: 51351ca3-9354-4eae-8d8c-d09f168594ab
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"USGov Arizona","Slice":"SliceC","Ring":"4","ScaleUnit":"000","RoleInstance":"AGSFE_IN_0"}}
Strict-Transport-Security: max-age=31536000
Content-Length: 243
Cache-Control: private
Content-Type: application/json
Date: Thu, 08 Jul 2021 00:05:47 GMT
Body:
{
"error": {
"code": "UnableToDeserializePostBody",
"message": "were unable to deserialize ",
"innerError": {
"date": "2021-07-08T00:05:48",
"request-id": "51351ca3-9354-4eae-8d8c-d09f168594ab",
"client-request-id": "51351ca3-9354-4eae-8d8c-d09f168594ab"
}
}
}
添加成员请求失败
POST https://graph.microsoft.us/beta/teams/<team-id>/members
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"roles": [],
user@odata.bind: https://graph.microsoft.us/beta/users('<user guid>')
}
回复
{
"error": {
"code": "NotFound",
"message": "Not Found",
"innerError": {
"date": "2021-07-08T00:35:13",
"request-id": "b488d292-2733-4512-a759-507a3a58bdbb",
"client-request-id": "b488d292-2733-4512-a759-507a3a58bdbb"
}
}
}
解决方案
2021 年 11 月 15 日更新
添加团队成员似乎已修复。该修复与该错误相同,似乎已经通过,但没有公开文档。我不确定“allowNewTimeProposals”标志,因为我们只是将它排除在我们的请求之外。
原帖
对于事件请求,使用“allowNewTimeProposals”属性会导致 Graph 在使用美国国家云时抛出“UnableToDeserializePostBody”错误。但是,全球端点使用此参数可以正常工作。MS 的回答是,这将在下个季度修复。
.us Graph 端点的“添加团队成员”请求已中断,他们计划在下个季度修复它。
换句话说。MS 文档就像一个设计提案/营销文档,旨在让您为他们购买和测试他们的服务。
推荐阅读
- html - 如何使跨度与 html 中的标点符号具有相同的包装?
- c# - 我的 UWP 检查更新不起作用。GetAppAndOptionalStorePackageUpdatesAsync() 的结果似乎不正确
- google-apps-script - 如何存储 JSON 循环值并将其发送到空工作表?
- matlab - For 循环设置变量但略有变化
- javascript - 即使使用 JSON.stringify,输出也是 [object,Object]
- typescript - 如何从 Typescript 中数组中的项类型中删除空接口类型
- mips - MIP 指令集延迟(以周期为单位)和伪指令
- excel - 我不明白代码是如何读取的(VBA)
- bootstrap-4 - 使用引导程序 5 将导航按钮向右对齐
- pandas - 在熊猫数据框中按计数分组