如何从图形连接器列出外部项目

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

我正在使用 msgraph-sdk-java 构建 Graph-Connector 来创建连接/架构并创建 ExteralItems。

我想构建删除由我们的连接器创建的所有

ExternalItems
的功能。问题是我无法获取
ExternalItems
的列表或
ExternalItems
的 id 列表。 我可以通过 ID 收到
ExternalItem
,但没有所有项目的列表。

此方法返回

null

getGraphClient().external().connections().byExternalConnectionId(connectionId).get().getItems()

这种方法会抛出一个

ODataError
UnknownError:

getGraphClient().external().connections().byExternalConnectionId(connectionId).items().get().getValue()

这种方法会抛出:

"Forbidden","message":"Application permission is only supported for the following entity types:site, list, listItem, drive and driveItem."

QueryPostRequestBody queryPostRequestBody = new QueryPostRequestBody();
List<SearchRequest> requests = new LinkedList<>();
SearchRequest searchRequest = new SearchRequest();
LinkedList<EntityType> entityTypes = new LinkedList<>();
entityTypes.add(EntityType.ExternalItem);
searchRequest.setEntityTypes(entityTypes);
LinkedList<String> contentSources = new LinkedList<>();
contentSources.add("/external/connections/" + connectionId);
searchRequest.setContentSources(contentSources);
SearchQuery query = new SearchQuery();
query.setQueryString("*");
searchRequest.setQuery(query);
searchRequest.setRegion("CHE");
requests.add(searchRequest);
queryPostRequestBody.setRequests(requests);
var result = getGraphClient().search().query().post(queryPostRequestBody);

我应该如何收到

ExternalItems
?有没有另一种方法可以删除连接器的所有
ExternalItems
而不删除整个连接器?

java microsoft-graph-api microsoft-graph-sdks
1个回答
0
投票

仅当您知道外部项目的 ID 时,才可以删除该项目。

当您创建外部项目时,您可以指定该项目的 ID。您必须将所有项目 ID 存储在某处。

其他选项是使用

/search/query
搜索外部项目并返回
substrateContentDomainId
属性作为响应。您可以解析该值并获取逗号
,
后面的子字符串,即图形连接器项的
itemId
。限制是
/search/query
不支持
externalItem
的应用程序权限。如果您尝试代表登录用户(具有委派权限)进行搜索,则该用户必须有权访问所有项目。

POST https://graph.microsoft.com/v1.0/search/query
{
    "requests": [
        {
            "entityTypes": [
                "externalItem"
            ],
            "contentSources": [
                "/external/connections/<connection_id>"
            ],
            "query": {
                "queryString": "*"
            },
            "from": 0,
            "size": 3,
            "fields": [
                "substrateContentDomainId"
            ]
        }
    ]
}

因此,如果您想避免删除整个连接器,则没有简单的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.