使用PHP和Microsoft Graph API我通过查询来提取用户:
https://graph.windows.net/<tenant>/users/<userId>?api-version=2013-11-08
这样可以正常工作,但只返回用户对象的标准字段。根据文档,我应该能够使用$ select = *来获取所有用户数据,如下所示:
https://graph.windows.net/<tenant>/users/<userId>?$select=*&api-version=2013-11-08
然而,这给了我以下错误:
{"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"The ability to use the $select query option to define a projection in a data service query is disabled. To enable this functionality, set the DataServiceConfiguration. AcceptProjectionRequests property to true."}}}
如何启用&#34; AcceptProjectionRequests&#34;?我在文档或其他SO线程中找不到任何相关内容。
答案 0 :(得分:3)
您在上面引用的API是Azure AD Graph,它与Microsoft Graph APIs不同。您可能值得花时间查看Microsoft Graph API并考虑从Azure AD Graph转换。 Azure AD Graph团队的一般指导建议使用Microsoft Graph而不是Azure AD Graph。您可以阅读有关差异和Azure AD指南here的更多信息。
话虽如此,Azure AD Graph不支持$ select(如上面链接的博客文章中所述)。 Microsoft Graph确实支持$ select进行查询预测(参见Microsoft Graph or Azure AD)。
目前(截至2016年7月8日)Microsoft Graph支持Azure AD Graph支持的大多数目录功能,但不是全部。在某些情况下,Microsoft Graph支持Azure AD Graph中没有的功能(例如,能够进行$ select投影查询)。
根据OData规范,$ select = *可以返回所有实体属性或默认属性集(前提是默认集包含所有键属性)。 Microsoft Graph实现是后者,它将返回一组关键属性。为了获得所需的所有必要属性,您需要显式请求所需的整个列表,除非它们恰好位于默认集合中。