无法通过Microsoft图形API从头创建团队

杨凯文

我遵循此文档,并尝试使用代码https://docs.microsoft.com/zh-cn/graph/api/team-post?view=graph-rest-1.0&tabs=csharp%2Chttp创建一个团队这是我的代码段:

var scopes = new string[] { "https://graph.microsoft.com/.default" };

            // Configure the MSAL client as a confidential client
            var confidentialClient = ConfidentialClientApplicationBuilder
                .Create(clientId)
                .WithTenantId(tenantId)
                .WithClientSecret(clientSecret)
                .Build();
 GraphServiceClient graphServiceClient =
                new GraphServiceClient(new DelegateAuthenticationProvider(async (requestMessage) =>
                {

                    // Retrieve an access token for Microsoft Graph (gets a fresh token if needed).
                    var authResult = await confidentialClient
                        .AcquireTokenForClient(scopes)
                        .ExecuteAsync();

                    // Add the access token in the Authorization header of the API request.
                    requestMessage.Headers.Authorization =
                        new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
                })
                );

            // Make a Microsoft Graph API call
            var team = new Team
            {
                DisplayName = "My Sample Team",
                Description = "My Sample Team’s Description",
                AdditionalData = new Dictionary<string, object>()
    {
        {"[email protected]", "https://graph.microsoft.com/v1.0/teamsTemplates('standard')"},
        {"[email protected]", "[{\"@odata.type\":\"#microsoft.graph.aadUserConversationMember\",\"roles\":[\"owner\"],\"userId\":\"57d4fc1c-f0a3-1111-b41e-22229f05911c\"}]"}
    }
            };
 GraphServiceClient graphServiceClient =
                new GraphServiceClient(new DelegateAuthenticationProvider(async (requestMessage) =>
                {

                    // Retrieve an access token for Microsoft Graph (gets a fresh token if needed).
                    var authResult = await confidentialClient
                        .AcquireTokenForClient(scopes)
                        .ExecuteAsync();

                    // Add the access token in the Authorization header of the API request.
                    requestMessage.Headers.Authorization =
                        new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
                })
                );

            // Make a Microsoft Graph API call
            var team = new Team
            {
                DisplayName = "My Sample Team",
                Description = "My Sample Team’s Description",
                AdditionalData = new Dictionary<string, object>()
    {
        {"[email protected]", "https://graph.microsoft.com/v1.0/teamsTemplates('standard')"},
        {"[email protected]", "[{\"@odata.type\":\"#microsoft.graph.aadUserConversationMember\",\"roles\":[\"owner\"],\"userId\":\"57d4fc1c-f0a3-4105-b41e-1ba89f05911c\"}]"}
    }
            };

但是得到这个错误:

 "message": "Bind requests not supported for containment navigation property.",\r\n   

我正在使用最新的Microsoft.Graph库,版本是V3.1.8

有没有人对此问题或odata格式错误有任何想法?

吴艾伦

似乎[email protected]仍在变化。目前无法使用。

您需要使用members属性。

POST https://graph.microsoft.com/v1.0/teams

{
  "[email protected]":"https://graph.microsoft.com/v1.0/teamsTemplates('standard')",
  "displayName":"My Sample Team555",
  "description":"My Sample Team’s Description555",
  "members":[
      {
         "@odata.type":"#microsoft.graph.aadUserConversationMember",
         "roles":[
            "owner"
         ],
         "userId":"9xxxxxc9-f062-48e2-8ced-22xxxxx6dfce"
      }
   ]
}

相应的C#代码应为:

var team = new Team
            {
                DisplayName = "My Sample Team557",
                Description = "My Sample Team’s Description557",
                Members = (ITeamMembersCollectionPage)new List<ConversationMember>()
                {
                    new AadUserConversationMember
                    {
                        Roles = new List<String>()
                        {
                            "owner"
                        },
                        UserId = "9xxxxxc9-f062-48e2-8ced-22xxxxx6dfce"
                    }
                },
                AdditionalData = new Dictionary<string, object>()
                {
                    {"[email protected]", "https://graph.microsoft.com/v1.0/teamsTemplates('standard')"}
                }
            };

不幸的是,当我运行代码时,它显示:

System.InvalidCastException: 'Unable to cast object of type 'System.Collections.Generic.List`1[Microsoft.Graph.ConversationMember]' to type 'Microsoft.Graph.ITeamMembersCollectionPage'.'

我无法使它工作。解决方法是使用httpClient在您的代码中发送请求。

在这里看到类似的问题

更新:

我已经知道了。

您可以尝试以下代码:

        var team = new Team
        {
            DisplayName = "My Sample Team558",
            Description = "My Sample Team’s Description558",
            Members = new TeamMembersCollectionPage() {
                new AadUserConversationMember
                {
                    Roles = new List<String>()
                    {
                        "owner"
                    },
                    UserId = "9xxxxxc9-f062-48e2-8ced-22xxxxx6dfce"
                }
            },
            AdditionalData = new Dictionary<string, object>()
            {
                {"[email protected]", "https://graph.microsoft.com/v1.0/teamsTemplates('standard')"}
            }
        };

如果您更喜欢httpClient方法,请参考以下内容:

        string str = "{\"[email protected]\":\"https://graph.microsoft.com/v1.0/teamsTemplates('standard')\",\"displayName\":\"My Sample Team999\",\"description\":\"My Sample Team’s Description555\",\"members\":[{\"@odata.type\":\"#microsoft.graph.aadUserConversationMember\",\"roles\":[\"owner\"],\"userId\":\"9xxxxxc9-f062-48e2-8ced-22xxxxx6dfce\"}]}";

        var content = new StringContent(str, Encoding.UTF8, "application/json");

        HttpClient client = new HttpClient();
        
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
        var response = client.PostAsync("https://graph.microsoft.com/v1.0/teams", content).Result;

更新2:

如果您需要用邮递员来称呼它,请使用以下格式:

{
  "[email protected]":"https://graph.microsoft.com/v1.0/teamsTemplates('standard')",
  "displayName":"My Sample Team555",
  "description":"My Sample Team’s Description555",
  "members":[
      {
         "@odata.type":"#microsoft.graph.aadUserConversationMember",
         "roles":[
            "owner"
         ],
         "userId":"9xxxxxc9-f062-48e2-8ced-22xxxxx6dfce"
      }
   ]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法通过Microsoft图形API访问SharedWithMe文件夹

来自分类Dev

使用 Microsoft 图形存档 Microsoft 团队

来自分类Dev

使用Graph Api创建团队时无法访问Microsoft Teams频道的电子邮件地址,SharePoint和文件

来自分类Dev

无法使用Microsoft graph API向团队添加应用

来自分类Dev

通过Facebook图形API创建事件

来自分类Dev

通过Facebook图形API创建事件

来自分类Dev

C#的图形API:尝试在Office 365上创建团队时出现BadGateway结果

来自分类Dev

如何通过Microsoft Graph API / SDK将自适应卡发送给Microsoft团队?

来自分类Dev

Microsoft图形API的新旧

来自分类Dev

通过图形API创建并邀请群组参加活动

来自分类Dev

通过 REST API 在 Sharepoint 在线团队网站上创建列表项

来自分类Dev

是否可以使用自适应卡片格式通过图形 API 在 Microsoft Teams 频道中创建消息(似乎仅限于文本和 HTML)

来自分类Dev

无法通过Graph API将邀请对象添加到团队中

来自分类Dev

ArangoDB图形创建API

来自分类Dev

团队服务:无法创建错误

来自分类Dev

无法检出通过github API创建的标签

来自分类Dev

有没有办法通过API创建Facebook事件,因为图形API不再可用

来自分类Dev

如何使用新的Microsoft图形API创建身份验证令牌?

来自分类Dev

Microsoft图形API以编程方式创建在线会议,但遇到403错误

来自分类Dev

用于 oneDrive 数据访问的 Microsoft 图形 API 无法获得管理员同意

来自分类Dev

从Microsoft团队渠道获取所有消息和答复-图形分页

来自分类Dev

无法通过Azure图形API获取完整的登录用户AAD详细信息

来自分类Dev

.Net Microsoft团队会议API生成访问被拒绝令牌

来自分类Dev

是否有通过终端创建图形的框架?

来自分类Dev

Perl通过STDIN取值后创建图形

来自分类Dev

工作帐户的Microsoft图形API错误

来自分类Dev

使用 Microsoft 图形 API 检索特定属性

来自分类Dev

无法在TFS 2010中创建新的团队项目

来自分类Dev

通过LinkedIn API成功创建的帖子无法回读

Related 相关文章

  1. 1

    无法通过Microsoft图形API访问SharedWithMe文件夹

  2. 2

    使用 Microsoft 图形存档 Microsoft 团队

  3. 3

    使用Graph Api创建团队时无法访问Microsoft Teams频道的电子邮件地址,SharePoint和文件

  4. 4

    无法使用Microsoft graph API向团队添加应用

  5. 5

    通过Facebook图形API创建事件

  6. 6

    通过Facebook图形API创建事件

  7. 7

    C#的图形API:尝试在Office 365上创建团队时出现BadGateway结果

  8. 8

    如何通过Microsoft Graph API / SDK将自适应卡发送给Microsoft团队?

  9. 9

    Microsoft图形API的新旧

  10. 10

    通过图形API创建并邀请群组参加活动

  11. 11

    通过 REST API 在 Sharepoint 在线团队网站上创建列表项

  12. 12

    是否可以使用自适应卡片格式通过图形 API 在 Microsoft Teams 频道中创建消息(似乎仅限于文本和 HTML)

  13. 13

    无法通过Graph API将邀请对象添加到团队中

  14. 14

    ArangoDB图形创建API

  15. 15

    团队服务:无法创建错误

  16. 16

    无法检出通过github API创建的标签

  17. 17

    有没有办法通过API创建Facebook事件,因为图形API不再可用

  18. 18

    如何使用新的Microsoft图形API创建身份验证令牌?

  19. 19

    Microsoft图形API以编程方式创建在线会议,但遇到403错误

  20. 20

    用于 oneDrive 数据访问的 Microsoft 图形 API 无法获得管理员同意

  21. 21

    从Microsoft团队渠道获取所有消息和答复-图形分页

  22. 22

    无法通过Azure图形API获取完整的登录用户AAD详细信息

  23. 23

    .Net Microsoft团队会议API生成访问被拒绝令牌

  24. 24

    是否有通过终端创建图形的框架?

  25. 25

    Perl通过STDIN取值后创建图形

  26. 26

    工作帐户的Microsoft图形API错误

  27. 27

    使用 Microsoft 图形 API 检索特定属性

  28. 28

    无法在TFS 2010中创建新的团队项目

  29. 29

    通过LinkedIn API成功创建的帖子无法回读

热门标签

归档