2017-06-15 30 views
1

在图形浏览器,当我验证和使用“得到一个开放的扩展名”的样品,它确实对这个端点的GET:

https://graph.microsoft.com/v1.0/me?$select=id,displayName,mail,mobilePhone&$expand=extensions 

返回我受够了“建立一个开放的添加任何扩展扩展名“样本。但是,如果我删除$选择参数,以便端点看起来像这样...

https://graph.microsoft.com/v1.0/me?$expand=extensions 

...然后我得到一个错误,指出“”类型的实体实例值“microsoft.graph.user” 。没有财产“身份证”的值”看来我需要有一个$选择参数返回扩展扩展和没关系的$选择值是什么 - 我可以用那并不是一个无意义的字符串“T对应于JSON有效载荷的任何领域,它工作正常。

为什么在这种情况下需要$选择参数?

+1

嘿道格,你能分享无意义的字符串的例子吗?我绝对可以把无意义的字符串放在select子句中(这是一个bug),但是它需要我明确地将id放在那里。 –

+1

嘿马克,下面是用于返回我已经添加到我的用户节点的扩展工作正常的请求的例子: https://graph.microsoft.com/v1.0/me?$select=fieldnotfound&$expand =扩展 我得到上面,如果我不包括$选择记录错误,但加入$选择= fieldnotfound使得它的工作。 –

回答

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

我怀疑这是周围的默认字段中的错误选择,但我会顺从那个Graph团队。上面的查询应该至少让你在此期间前进。