Json Microsoft Graph Explorer中返回的不同用户对象

Json Microsoft Graph Explorer中返回的不同用户对象,json,microsoft-graph-api,Json,Microsoft Graph Api,我正在使用Microsoft Graph API。但是,我有一个问题/担心,API根据调用的端点为用户返回不同的值 下面是https://graph.microsoft.com/v1.0/me/endpoint { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity", "id": "VALUE GOES HERE", "businessPhones": [], "

我正在使用Microsoft Graph API。但是,我有一个问题/担心,API根据调用的端点为用户返回不同的值

下面是
https://graph.microsoft.com/v1.0/me/
endpoint

{
    "@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"
    }
}

首先,有人知道为什么会有差异吗?更重要的是,有人知道我如何总能检索到更健壮的用户对象吗?

有两件事:

  • 和对象是具有不同属性的不同资源。例如,
    个人
    可以表示Outlook中的个人联系人、组织GAL中的联系人或最近的电子邮件或Skype通信构造的联系人。与此相对应的是
    用户
    ,它始终代表组织Active Directory中的用户

  • 当检索不带
    $select
    参数的
    用户
    对象时,Microsoft Graph将仅返回
    用户
    属性的子集。这样做是为了通过减少默认情况下返回的属性数量来节省带宽(您可能会惊讶于有多少调用
    /me
    只是为了检索
    DisplayName
    )。从:

    注意:获取用户只会返回一组默认属性(
    businessPhones
    displayName
    givenName
    id
    jobTitle
    mail
    officeLocation
    preferredLanguage
    姓氏
    userPrincipalName
    )。使用
    $select
    获取用户对象的其他属性和关系

    换句话说,当您调用
    /v1.0/me
    时,Microsoft Graph会自动将
    $select=businessPhones、displayName、givenName、id、jobTitle、mail、mobilePhone、officeLocation、preferredLanguage、姓氏、userPrincipalName
    附加到您的请求中。如果您指定自己的
    $select
    ,它将使用您提供的


  • 我已经就这个问题与微软公司进行了多次对话。此时,他们无法回答。他们认识到/me用户对象和/people用户对象之间的数据模型和数据值是不同的,但他们不知道它们是如何或为什么不同的。它们显然是来自不同数据源的不同数据模型,但没有图表说明它们从何处获取数据。我被告知,这仍然只是测试版,他们将在发布前协调这两个数据模型,但他们不确定何时发布