从 MS Graph SDK 中的 ApplicationCollectionResponse 访问解析的应用程序

问题描述 投票:0回答:1

我想提取我的应用程序的应用程序注册和服务主体,只知道 appId。这需要我将 (appId='appId') 附加到 URI。

https://graph.microsoft.com/v1.0/applications(appId='appId') https://graph.microsoft.com/v1.0/servicePrincipals(appId='appId')

由于无法附加到 URI,我不得不使用

RequestInformation
,然后使用
RequestAdapter.SendAsync
来获取信息。这是完整的代码

var requestInfo = graphServiceClient.Applications.ToGetRequestInformation();
var fixedUri = $"{requestInfo.URI}(appId='<my app id here>')";
requestInfo.URI = new Uri(fixedUri);
var apps = await graphServiceClient.RequestAdapter.SendAsync(requestInfo, ApplicationCollectionResponse.CreateFromDiscriminatorValue).ConfigureAwait(false);

效果很好。但结果变量有一个空的

Value
属性,所以我没有得到任何已解析的
Application
返回。不过,我确实将应用程序视为
apps.AdditionalData
中的数据字典,因此我知道数据已返回。我需要做什么才能填充
Value

请注意,我已经找到了

graphServiceClient.ApplicationsWithAppId
graphServiceClient.ServicePrincipalWithAppId
,所以我确实有一个解决方案,但我仍然对手动方式感到好奇

c# azure-active-directory microsoft-graph-api azure-sdk-.net
1个回答
0
投票

原因是 https://graph.microsoft.com/v1.0/applications(appId='appId') 不返回集合而是单个实体,因此您需要使用

Application.CreateFromDiscriminatorValue
而不是
ApplicationCollectionResponse.CreateFromDiscriminatorValue

结果将是

Application
的实例。

var requestInfo = graphServiceClient.Applications.ToGetRequestInformation();
var fixedUri = $"{requestInfo.URI}(appId='<my app id here>')";
requestInfo.URI = new Uri(fixedUri);
var app = await graphServiceClient.RequestAdapter.SendAsync(requestInfo, Application.CreateFromDiscriminatorValue).ConfigureAwait(false);
© www.soinside.com 2019 - 2024. All rights reserved.