2016-08-15 28 views
1

使用PHP和微软图形API,我通过查询获取用户的所有用户数据:获取使用Microsoft图形API

https://graph.windows.net/<tenant>/users/<userId>?api-version=2013-11-08

这工作得很好,但只返回用户对象的标准字段。根据该文件,我应该能够使用$选择= *获取所有用户数据,像这样:

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."}}}

如何启用“AcceptProjectionRequests”?在文档或其他SO线程中我没有发现这一点。

+1

Graph API支持以下Odata查询参数:'$ filter,$ batch,$ expand,$ orderby,$ top,$ skiptoken和previous-page'。请参阅[这里](https://msdn.microsoft.com/en-us/library/azure/ad/graph/howto/azure-ad-graph-api-operations-overview#OdataQueryParameters) –

回答

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)。

Currently (as of 7/8/2016) Microsoft Graph supports most of the directory features that Azure AD Graph supports, but not all. In some cases, Microsoft Graph supports functionality that is not in Azure AD Graph (such as ability to make $select projection queries).

每OData的规范,$选择= *可以返回所有实体的属性或属性的默认设置(提供的默认设置包含所有关键属性)。 Microsoft Graph实现是后者,它将返回一组关键属性。为了获得您需要的所有必要属性,您需要明确请求所需的整个列表,除非它们碰巧在默认集合内。

+0

我是否正确理解它将无法使用Azure AD Graph从AD中检索自定义字段,并且我们必须转移到Microsoft Graph API? – Publicus

+0

使用Azure AD Graph API时,扩展/自定义属性应作为对象的默认属性集中的一部分,作为对象GET请求的一部分返回。 –

+0

没有返回任何自定义属性,似乎Azure AD Graph API仅返回默认设置。这是查询时https://graph.windows.net/ /用户/ Publicus