在Graph Explorer中,当我进行身份验证并使用"获取一个开放的扩展程序"示例,它对此端点执行GET:
https://graph.microsoft.com/v1.0/me?$select=id,displayName,mail,mobilePhone&$expand=extensions
返回我用&#34添加的任何扩展程序;创建一个开放式扩展程序"样品。但是,如果我删除$ select参数,以便端点看起来像这样......
https://graph.microsoft.com/v1.0/me?$expand=extensions
...然后我收到一条错误,指出""类型' microsoft.graph.user'的实体实例值。没有财产的价值' id'。"看来我需要一个$ select参数来返回扩展的扩展。并且$ select值的含义并不重要 - 我可以使用与JSON有效负载中的任何字段都不对应的无意义字符串,并且它可以正常工作。
为什么在这种情况下需要$ select参数?
答案 0 :(得分:0)
除$select=fieldnotfound
外,我能够复制此内容。我在使用或不使用$ select语句时返回相同的错误。我无法解释为什么你会看到这种行为,但我可以提供一些有关这里出现问题的见解。
首先介绍一下幕后发生的事情。
如果您在没有其他参数的情况下致电/me
,则会自动使用默认的$select
参数。默认情况下,它使用以下内容:
$select=businessPhones,displayName,givenName,jobTitle,mail,mobilePhone,officeLocation,preferredLanguage,surname,userPrincipalName,id
如您所见,id
实际上是所选字段之一。理论上,简单地添加$expand=extentions
应该按预期工作。不幸的是,添加$expand
似乎也略微改变了基础$select
语句中的字段。即,它会删除id
字段:
$select=businessPhones,displayName,givenName,jobTitle,mail,mobilePhone,officeLocation,preferredLanguage,surname,userPrincipalName
如果我使用同时指定两者,它按预期工作:
https://graph.microsoft.com/v1.0/me?$select=businessPhones,displayName,givenName,jobTitle,mail,mobilePhone,officeLocation,preferredLanguage,surname,userPrincipalName,id&$expand=extensions
我怀疑这是一个关于默认字段选择的错误,但是我会按照图表团队的说法进行操作。上述查询至少应该允许您在此期间继续前进。