C# Azure AD-仅使用MS Graph SDK为我自己的租户列出schemaExtensions

C# Azure AD-仅使用MS Graph SDK为我自己的租户列出schemaExtensions,c#,azure-active-directory,azure-ad-graph-api,microsoft-graph-sdks,C#,Azure Active Directory,Azure Ad Graph Api,Microsoft Graph Sdks,我正在研究可怕的MS文档,同时找出如何创建和列出为我自己的租户创建的模式扩展 MS文档提供了一个示例,说明如何通过MS Graph SDK列出模式扩展,但是结果返回来自其他开发人员和应用程序的扩展。MS注释实际上提供了以下建议: 注意:该列表还将包含由其他开发人员从其他租户创建的架构扩展定义(标记为可用)。这与仅返回租户特定数据的其他API不同。基于架构扩展定义创建的扩展数据是特定于租户的,只能由明确授予权限的应用访问 首先,我到底为什么要列出其他人创建的扩展? 我只想列出为我自己的应用程序/

我正在研究可怕的MS文档,同时找出如何创建和列出为我自己的租户创建的模式扩展

MS文档提供了一个示例,说明如何通过MS Graph SDK列出模式扩展,但是结果返回来自其他开发人员和应用程序的扩展。MS注释实际上提供了以下建议:

注意:该列表还将包含由其他开发人员从其他租户创建的架构扩展定义(标记为可用)。这与仅返回租户特定数据的其他API不同。基于架构扩展定义创建的扩展数据是特定于租户的,只能由明确授予权限的应用访问

首先,我到底为什么要列出其他人创建的扩展? 我只想列出为我自己的应用程序/租户创建的扩展,但不知道如何做到这一点? 我找不到一个Graph SDK示例,它显示了如何仅为我自己创建的扩展返回结果

到目前为止,我使用的是上面链接中的MS示例,其中一个通用的结果列表返回每个人和他的狗超过100个不同的扩展名

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var schemaExtensions = await graphClient.SchemaExtensions
    .Request()
    //.Filter("id eq 'graphlearn_test'") // this would only work for returning one particular extension, I want to list all extensions created only for my own app/tenant
    .GetAsync();

在创建扩展的过程中,可以指定
owner
属性,该属性是架构扩展所有者的应用程序的
appId

默认情况下,调用应用程序的
appId
将设置为所有者。但是,可以在创建时提供该属性,以将所有者
appId
设置为与调用应用程序不同的内容。设置后,此属性为只读,无法更改

然后,您可以通过
owner
属性筛选扩展

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var schemaExtensions = await graphClient.SchemaExtensions
    .Request()
    .Filter("owner eq 'your_app_id'")
    .GetAsync();

非常感谢,非常有帮助:)