使用 MS Graph API 获取共享日历所有者的用户 ID
Get UserId of shared calendar's owner using MS Graph API
我想 get the User's profile 与我共享日历,但此呼叫需要 id
或 userPrincipalName
:
GET /users/{id | userPrincipalName}
仅限共享日历returns:
{
"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
?
没有直接的方法来实现你想要的。但是你可以通过两步获取id或者userPrincipalName:
获取所有者不是您的日历,如您发布的回复(official docs):
使用所有者中的地址调用以下API:
带有 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"
}
对于 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 实际上是 "single user" 租户,您可以检索的 唯一 用户是您自己 (/me
)。正如您无法从另一家公司的 AAD 访问用户数据一样,您也无法检索另一个 Outlook.com 用户的个人资料。如果你考虑到我访问你的个人联系信息的代价高昂的影响,那么这条规则就位是有道理的。
我想 get the User's profile 与我共享日历,但此呼叫需要 id
或 userPrincipalName
:
GET /users/{id | userPrincipalName}
仅限共享日历returns:
{
"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
?
没有直接的方法来实现你想要的。但是你可以通过两步获取id或者userPrincipalName:
获取所有者不是您的日历,如您发布的回复(official docs):
使用所有者中的地址调用以下API:
带有 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" }
对于 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 实际上是 "single user" 租户,您可以检索的 唯一 用户是您自己 (/me
)。正如您无法从另一家公司的 AAD 访问用户数据一样,您也无法检索另一个 Outlook.com 用户的个人资料。如果你考虑到我访问你的个人联系信息的代价高昂的影响,那么这条规则就位是有道理的。