Получить UserId владельца общего календаря, используя MS Graph API - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу получить профиль пользователя , который поделился со мной календарем, но для этого звонка требуется id или userPrincipalName:

GET /users/{id | userPrincipalName}

Общий календарь возвращает только:

{
    "id": "**********************************************=",
    "name": "Lala Lalala",
    "color": "auto",
    "changeKey": "Epg+nQ9k3kuTN16cfoLtwAAAsZgDvA==",
    "canShare": false,
    "canViewPrivateItems": false,
    "canEdit": true,
    "owner": {
        "name": "Lala Lalala",
        "address": "Lalala@outlook.com"
    }
}

Так как я могу получить id или userPrincipalName владельца общего календаря?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Для учетных записей Work / School (арендаторы Azure AD) userPrincipalName - это адрес владельца (т. Е. alias@aad.domain.com):

"owner": {
    "name": "Lala Lalala",
    "address": "Lalala@outlook.com"
}

Если они принадлежат тому же арендатору, что и вы, выможете получить их профиль, используя GET https://graph.microsoft.com/v1.0/users/{owner.address}.

Важно : Это, однако, не относится к личным учетным записям (MSA / Outlook.com).Я упоминаю об этом только потому, что ваш пример использовал Lalala@outlook.com в качестве address.

Поскольку Outlook.com фактически является «однопользовательским» арендатором, вы можете получить только пользователя, которого вы можете получить самостоятельно (/me).Так же, как вы не можете получить доступ к данным пользователя из AAD другой компании, вы не можете получить профиль другого пользователя Outlook.com.Если вы примете во внимание возможные последствия моего доступа к вашей личной контактной информации, то будет понятно, почему это правило действует.

0 голосов
/ 20 сентября 2018

Нет прямого способа реализовать то, что вы хотите.Но вы можете получить идентификатор или имя пользователя userPrincipalName в два этапа:

  1. Получить календари, владельцем которых является не вы, ответ, который вы отправили ( официальные документы ):

    https://graph.microsoft.com/v1.0/me/calendars

  2. Используйте адрес в владельце для вызова следующего API:

    https://graph.microsoft.com/v1.0/users/{address}

Ответ с id и userPrincipalName :

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
    "id": "5eec0ff7-b007-48c4-87ae-7cddb085f234",
    "businessPhones": [],
    "displayName": "...",
    "givenName": "...",
    "jobTitle": null,
    "mail": "test@test.com",
    "mobilePhone": "8612345678",
    "officeLocation": "No WorkSpace",
    "preferredLanguage": null,
    "surname": "s",
    "userPrincipalName": "test@test.com"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...