【发布时间】:2020-11-09 12:29:02
【问题描述】:
我正在尝试在 .NET 核心应用程序中使用 Microsoft.Graph.Beta SDK 创建 MS Teams 会议。我正在使用以下代码来创建会议。
static void Main(string[] args)
{
var clientId = "<Enter you Client ID here>";
var tenantId = "<Enter your tenand ID here>";
var clientSecret = "<Enter your client secret here>";
var scopes = new string[] { "https://graph.microsoft.com/.default" };
///The client credential flow enables service applications to run without user interaction.
///Access is based on the identity of the application.
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId(tenantId)
.WithClientSecret(clientSecret)
.Build();
ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
var onlinemeeting = CreateTeamsMeeting(authProvider).GetAwaiter().GetResult();
Console.ReadLine();
}
public static async Task<OnlineMeeting> CreateTeamsMeeting(IAuthenticationProvider authProvider)
{
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
var onlineMeeting = new OnlineMeeting
{
StartDateTime = DateTimeOffset.Parse("2020-11-12T21:30:34.2444915+00:00"),
EndDateTime = DateTimeOffset.Parse("2020-11-12T22:00:34.2464912+00:00"),
Subject = "User Token Meeting",
};
return await graphClient.Me.OnlineMeetings
.Request()
.AddAsync(onlineMeeting);
}
但是,在运行上述代码时,我收到以下错误。
服务器错误:在 AAD 中按用户 ID 查找用户失败。客户端异常: 处理 HTTP 请求导致异常。请参见 由 this 的 'Response' 属性返回的 HTTP 响应 详情例外。
内部错误:AdditionalData:日期:2020-11-09T12:19:53 request-id: 02cd2168-d0d8-437a-9eee-117f1924a387 客户端请求 ID: 02cd2168-d0d8-437a-9eee-117f1924a387 ClientRequestId: 02cd2168-d0d8-437a-9eee-117f1924a387
我们如何解决这个错误??
【问题讨论】:
-
您正在使用基于Client credentials provider 的客户端凭据流。所以你应该使用
graphClient.Users["{user id/upn}"].OnlineMeetings.Request().AddAsync(onlineMeeting)而不是graphClient.Me.OnlineMeetings.Request().AddAsync(onlineMeeting)。 -
而如果你想实现以用户身份获取token,你应该选择Authorization code provider或Username/password provider。然后你可以继续使用
graphClient.Me.OnlineMeetings.Request().AddAsync(onlineMeeting)。 -
嗨,感谢@AllenWu 分享答案。这很有帮助。我试过你的方法。但是下面的错误来了。 “应用程序无权代表此用户创建在线会议。”如果您能分享您对此的想法,将不胜感激。谢谢。
-
已添加答案。如果任何答案有帮助,您可以将其标记为已接受。谢谢。
标签: c# azure microsoft-graph-api microsoft-graph-sdks microsoft-graph-teams