Microsoft Graph API:获取用户组织

时间:2019-04-09 09:29:57

标签: azure azure-active-directory microsoft-graph

我正在使用Microsoft Graph API来获取用户的一些详细信息。我还将AD用于身份验证和授权。

在此应用程序中,用户登录后将搜索一些用户,并需要与搜索匹配的所有用户的一些详细信息。

我点击了 users api (用户api),带有过滤器,但是我没有获得有关匹配用户的公司名称的详细信息。

https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'jo')

以下是对相同内容的答复

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
  "@odata.nextLink": "https://graph.microsoft.com/v1.0/users?$skiptoken=X%2744537074020001000000203A636F6D7061735F766A61407465737473636F7270696F67726F75702E6E657429557365725F33386664353661362D366361612D343939332D393264642D383439633938613039393033B900000000000000000000%27",
  "value": [
        {
            "businessPhones": [],
            "displayName": "John Doe",
            "givenName": "John",
            "jobTitle": null,
            "mail": null,
            "mobilePhone": null,
            "officeLocation": null,
            "preferredLanguage": null,
            "surname": "Doe",
            "userPrincipalName": "jdoe@mycomp.net",
            "id": "c8f63ba1-5150-44c1-b456-468040f12345"
        }
  ]
}

我需要做些什么来获取组织用户的公司名称?

2 个答案:

答案 0 :(得分:1)

  

我只需要一次登录就可以为所有用户提供此详细信息

这是不可能的。 get organization details的唯一方法是使用https://graph.microsoft.com/v1.0/organization API。

您需要提供访问令牌才能调用此api。在您的应用程序中,您使用一个用户登录以获取访问令牌。

如果在令牌请求URL中使用common,则将获得该登录用户的默认组织。

如果您在请求网址中使用特定的租户,则将获取该租户的组织详细信息。

如果只想获取用户的公司名称,则可以调用https://graph.microsoft.com/beta/users/{userid}来获取它。

enter image description here

答案 1 :(得分:1)

user资源默认情况下仅返回属性的子集。根据{{​​3}}:

  

注意:获取用户仅返回默认属性集( businessPhones,displayName,givenName,id,jobTitle,邮件,mobilePhone,officeLocation,preferredLanguage,姓氏,userPrincipalName )。使用$select获取用户对象的其他属性和关系。

换句话说,您需要在查询中添加一个$select参数,该参数列出了要返回的属性。例如,如果要检索iduserPrincipalNamecompanyName,则可以使用:

https://graph.microsoft.com/v1.0/users?$select=displayName,id,jobTitle,companyName

完整的可用属性集可以在documentation文档中找到。