我想get the User's profile与我共享一个日历,但是此通话需要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
?
答案 0 :(得分:1)
对于工作/学校帐户(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用户的配置文件。如果您考虑到我访问您的个人联系信息所涉及的价格昂贵问题,那么为什么要制定此规则是很有意义的。
答案 1 :(得分:0)
没有直接方法来实现您想要的。但是您可以通过两个步骤获取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" }