0

我无法将团队添加到以前使用 Microsoft Graph 创建的组。

我正在使用Microsoft Graph .NET 客户端库(1.19.0) 来使用 Microsoft Graph,遵循此处的 .NET Core 教程。

graphClient使用客户端流程进行身份验证(控制台作为守护程序运行),我在构建或身份验证时没有问题:

// Auth info
var tenantId = "xxx";
var clientId = "xxx";
var clientSecret = "xxx";
var scopes = new List<string> { "https://graph.microsoft.com/.default" };

// Create ConfidentialClientApplication
var confidentialClientApplication = ConfidentialClientApplicationBuilder.Create(clientId)
    .WithAuthority(AzureCloudInstance.AzurePublic, tenantId)
    .WithClientSecret(clientSecret)
    .Build();

// Create authenticationProvider
ClientCredentialProvider authenticationProvider = new ClientCredentialProvider(confidentialClientApplication, scopes[0]);

// Create graph client
// Use graph BETA endpoint
var baseUrl = "https://graph.microsoft.com/beta/";
var graphServiceClient = new GraphServiceClient(baseUrl, authenticationProvider);

或创建一个组:

var groupName = "Team group";
var groupDescription = "Awesome group";
var group = new Group
{
    DisplayName = groupName,
    Description = groupDescription,
    GroupTypes = new List<string> { "Unified" },
    Visibility = "Private",
    MailNickname = groupName.Replace("", string.Empty).ToLower(),
    MailEnabled = false,
    SecurityEnabled = false
};
// Send the POST request to create group 
group = await graphServiceClient.Groups.Request().AddAsync(group);

但是在将团队添加到新组时:

var team = new Team();
await graphServiceClient
    .Groups[group.Id]
    .Team
    .Request()
    .PutAsync(team);

我收到以下错误:

Code: InvalidRequest
Message: Could not find member '@odata.type' on object of type 'Team'. Path '['@odata.type']', line 1, position 15.
Inner error:
AdditionalData:
request-id: xxx
date: 2019-10-30 09:12:04
ClientRequestId: xxx

但是当将团队模型序列化为 JSON 时,结果是:

{"@odata.type":"microsoft.graph.team"}

这表明存在具有团队类型的 OData 成员。

我已经尝试添加两个 NuGet 包Microsoft.AspNet.OData,并Microsoft.Data.OData按照这里的建议:Could not find member '@odata.type' on object of type 'TeamMemberSettings',但它没有用。

我还尝试使用HttpRequest产生相同结果的直接调用端点。我还尝试在 .NET Core 和 .Net Framework 应用程序中使用相同的代码。

4

1 回答 1

1

虽然您可以将Microsoft Graph SDK重新指向 Beta 版本,但它仍将仅使用 v1.0 数据模型。要实际使用 Microsoft Graph Beta,您应该使用Microsoft Graph Beta SDK

Install-Package Microsoft.Graph.Beta -Version 0.8.0-preview

您还使用了一个已弃用的端点,该端点将在年底前被删除。从文档中:

此 API 正在被Create team弃用,并将于 2019 年底移除。有关如何从组创建团队的详细信息,请参见Create team中的示例 4 和示例 5 。

要从 Group 创建Team,请发出POST如下命令:

await graphServiceClient
    .Groups[group.Id]
    .Team
    .Request()
    .PostAsync(team);

另外,请记住文档中的此注释:

如果组是在不到 15 分钟前创建的,则创建团队调用可能会由于复制延迟而失败并显示 404 错误代码。我们建议您重试创建团队呼叫 3 次,两次呼叫之间有 10 秒的延迟。

于 2019-10-30T20:52:58.347 回答