我正在使用Microsoft Graph API。但是,我有一个问题/关注API为用户返回不同的值,具体取决于调用哪个端点。
以下是https://graph.microsoft.com/v1.0/me/
端点的示例返回值。
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"id": "VALUE GOES HERE",
"businessPhones": [],
"displayName": "Lname, Andrew",
"givenName": "Andrew",
"jobTitle": "MY TITLE",
"mail": "andrew.lname@email.com",
"mobilePhone": null,
"officeLocation": "123 Business Street",
"preferredLanguage": null,
"surname": "Lname",
"userPrincipalName": "andrew.lname@email.com"
}
调用/me/manager
和/users/{ID}
等
然而,当我们调用/me/people
时,我们会得到一个更大更完整的用户对象。
{
"id": "ID VALUE HERE",
"displayName": "LName, Andrew",
"givenName": "Andrew",
"surname": "LName",
"birthday": "",
"personNotes": "",
"isFavorite": false,
"jobTitle": "MY TITLE",
"companyName": "MY COMPANY NAME",
"yomiCompany": "",
"department": "MY DEPARTMENT",
"officeLocation": "123 Business Street",
"profession": "",
"userPrincipalName": "andrew.lname@email.com",
"imAddress": "sip:andrew.lname@email.com",
"scoredEmailAddresses": [{
"address": "andrew.lname@email.com",
"relevanceScore": 285
}],
"phones": [{
"type": "business",
"number": "(555) 555-5555"
}],
"postalAddresses": [],
"websites": [],
"personType": {
"class": "Person",
"subclass": "OrganizationUser"
}
}
首先,是否有人知道为什么存在差异,更重要的是,是否有人知道我如何能够始终检索更强大的用户对象?
答案 0 :(得分:1)
有几件事情在发生:
person
和user
个对象是具有不同属性的不同资源。例如,person
可以代表来自Outlook的个人联系人,来自您的组织GAL的联系人,或者来自最近的电子邮件或Skype通信。将此与user
进行对比,user
始终代表组织Active Directory中的用户。
当您检索没有$select
参数的user
对象时,Microsoft Graph将仅返回/me
属性的子集。这样做是为了通过减少默认返回的属性数量来节省带宽(您可能会因为DisplayName
只需要检索businessPhones
的次数而感到震惊。来自documentation:
注意:获取用户仅返回一组默认属性(
displayName
,givenName
,id
,jobTitle
,mobilePhone
,officeLocation
,preferredLanguage
,surname
,userPrincipalName
)。使用$select
获取用户对象的其他属性和关系。
换句话说,当您致电/v1.0/me
时,Microsoft Graph会自动将$select=businessPhones,displayName,givenName,id,jobTitle,mail,mobilePhone,officeLocation,preferredLanguage,surname,userPrincipalName
附加到您的请求中。如果您指定自己的$select
,但它将使用您提供的那个。
答案 1 :(得分:0)
我与MSFT就此问题进行了几次对话。在这个时候,他们无法回答。他们认识到/ me用户对象和/ people用户对象之间的数据模型和数据值是不同的,但他们不知道它们是如何或为何不同。它们显然是来自不同数据源的不同数据模型,但没有关于它们从何处获取数据的图表。有人告诉我,这仍然只是测试版,他们将在发布之前协调两个数据模型,但他们不确定发布的时间。