【问题标题】:MS Graph beta/applications OData property 'resourceSpecificApplicationPermissions' does not exist on type 'microsoft.graph.apiApplication'MS Graph beta/applications OData 属性“resourceSpecificApplicationPermissions”在类型“microsoft.graph.apiApplication”上不存在
【发布时间】:2019-10-18 17:22:58
【问题描述】:

我正在针对 Graph API 编写一些电源查询,当我尝试从应用程序资源中提取 OData 时出现错误:

DataSource.Error:OData:“microsoft.graph.apiApplication”类型上不存在“resourceSpecificApplicationPermissions”属性。确保仅使用类型定义的属性名称。 细节: 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 修复?

【问题讨论】:

    标签: powerbi microsoft-graph-api powerquery


    【解决方案1】:

    在进行一些跟踪后,我发现架构在 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"/>
    

    作为一种解决方法,我向 Fiddler 添加了一条规则:

    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"/>');
    }
    

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 2015-08-02
      • 2021-01-09
      • 2021-07-10
      • 2020-11-30
      • 2019-07-31
      • 2017-07-22
      相关资源
      最近更新 更多