【发布时间】:2021-03-11 04:18:32
【问题描述】:
最近在尝试使用 mgt people picker 搜索具有以下标记的我的租户 Azure AD 用户时发现了一些奇怪的情况。
<mgt-people-picker type="any" transitive-search="true"></mgt-people-picker>
以下是使用的信息摘要:
a) 单租户,不允许使用个人 Microsoft 帐户。
b) 所有 API 权限要求均在应用程序和应用程序注册中授予。
"User.Read",
"User.ReadBasic.All",
"People.Read",
"People.Read.All",
"Contacts.Read",
"Directory.Read.All",
"User.Read.All",
"Member.Read.Hidden",
"Domain.Read.All",
"User.ReadWrite.All",
"APIConnectors.Read.All"
c) 已获得管理员同意。 d) 我正在使用 api/proxy 进行连接。
不知何故,我只能找到一些用户,一些用户没有找到。在 mgt people picker UI 中,我只需输入三到四个字符或完整的电子邮件地址即可搜索,但返回结果不正确。我发现当它返回不正确的结果时,它在检索照片值时出错。示例错误如下
我曾尝试使用Graph Explorer 对其进行测试。显然,它也无法返回正确的结果匹配。但只有使用以下查询测试,它才能将正确的用户返回给我。但是当使用 mgt people picker 时,它不能。任何建议都非常感谢。我只是猜测它与 Azure AD 用户配置文件设置有关,或者与我的应用程序配置或其他有关。希望能给我一些线索来解决这个问题。供您参考,我拥有访问组织 Azure 环境中所有资源的所有管理员权限。如果有我遗漏的信息,请告诉我,我将编辑帖子以包含它。
https://graph.microsoft.com/v1.0/users/<email address>
【问题讨论】:
-
当你说“我已经尝试使用 Graph Explorer 来测试它。显然,它也无法返回正确的结果匹配。”,你如何测试它?在 Graph explorer 中调用哪个端点?
-
在我的帖子中所述的 Graph Explorer 中使用此查询 url "graph.microsoft.com/v1.0/me/people?$search=shu" 来查看 Graph Explorer 下的响应预览。其中不显示返回的相关用户配置文件(基本)。我已编辑帖子以包含我使用 Graph Explorer 所做的图像
-
我用你的
<mgt-people-picker type="any" transitive-search="true"></mgt-people-picker>从我这边测试,发现实际调用的是https://graph.microsoft.com/v1.0/me/people?$search="shu"&$top=6&$filter=personType/class eq 'Person'。它有$top=6,这意味着只返回前6个项目。它还有一个过滤器$filter=personType/class eq 'Person'。所以请使用这个调用在 Microsoft Graph 资源管理器中进行测试,看看结果是否一致。 -
https://graph.microsoft.com/v1.0/users?$count=true&$search="displayName:ang"&$filter=startsWith(displayname,'ang')&$orderBy=displayName&$select=id,displayName,mail当我尝试使用上面的查询 url/endpoint 进行搜索时,它将显示正确的结果。这里的问题:我如何确保 mgt-people-picker 触发正确的端点到我的 api/proxy? -
另外,你说
https://graph.microsoft.com/v1.0/me/people?$search=shu没有返回足够的结果给你。我认为这可能是因为您没有正确理解 API。此 API 检索按与用户的相关性排序的人员对象集合,这由用户的通信和协作模式以及业务关系决定。在此处查看详细信息:docs.microsoft.com/en-us/graph/api/…。如果有帮助,请告诉我。
标签: azure azure-active-directory microsoft-graph-api microsoft-graph-sdks