Бета-версия MS Graph / свойства OData для приложения resourceSpecificApplicationPermissions не существует для типа «microsoft.graph.apiApplication» - PullRequest
0 голосов
/ 17 октября 2019

Я пишу некоторый мощный запрос к API Graph, и когда я пытаюсь извлечь OData из ресурса приложений, я получаю сообщение об ошибке:

DataSource.Error: OData: свойство 'resourceSpecificApplicationPermissions'не существует для типа «microsoft.graph.apiApplication». Убедитесь, что вы используете только те свойства, которые определены типом. Подробности: DataSourceKind = OData DataSourcePath = https://graph.microsoft.com/beta/applications

Source = OData.Feed(AppsURL,[#"Content-Type"="application/json", Authorization = AccessTokenHeader])

Если я делаю то же самое, но как запрос REST API, я получаю JSON, но затем мне нужно позаботитьсястраницы и преобразования.

Source = Json.Document(Web.Contents(AppsURL, 
    [
        Headers = [#"Content-Type"="application/json", 
        Authorization = AccessTokenHeader
        ]
    ]))

Если я сделаю то же самое с https://graph.microsoft.com/beta/servicePrincipals, метод OData.Feed работает как шарм. Любой возможный обходной путь или я должен ждать исправления API, прежде чем использовать этот ресурс?

1 Ответ

0 голосов
/ 18 октября 2019

После некоторой трассировки я обнаружил, что схема проверена по адресу: https://graph.microsoft.com/beta/$metadata и отсутствует одно определение.

К исходному ответу:

<ComplexType Name="apiApplication">
<Property Name="acceptMappedClaims" Type="Edm.Boolean"/>
<Property Name="knownClientApplications" Type="Collection(Edm.Guid)"/>
<Property Name="preAuthorizedApplications" Type="Collection(microsoft.graph.preAuthorizedApplication)"/>
<Property Name="requestedAccessTokenVersion" Type="Edm.Int32"/>
<Property Name="oauth2PermissionScopes" Type="Collection(microsoft.graph.permissionScope)" Nullable="false" />
</ComplexType>

Отсутствует:

<Property Name="resourceSpecificApplicationPermissions" Type="Collection(microsoft.graph.resourceSpecificPermission)" Nullable="false"/>

В качестве обходного пути я добавил в Fidller правило:

if (oSession.HostnameIs("graph.microsoft.com") && oSession.oResponse.headers.ExistsAndContains("Content-Type","application/xml;charset=utf-8") && oSession.PathAndQuery == '/beta/$metadata' ){
    oSession.utilDecodeResponse();
    oSession.utilReplaceInResponse('<Property Name="oauth2PermissionScopes" Type="Collection(microsoft.graph.permissionScope)" Nullable="false" />','<Property Name="oauth2PermissionScopes" Type="Collection(microsoft.graph.permissionScope)" Nullable="false" /><Property Name="resourceSpecificApplicationPermissions" Type="Collection(microsoft.graph.resourceSpecificPermission)" Nullable="false"/>');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...