所以我一直在尝试通过使用Microsoft Graph API获得可以访问某个站点Sharepoint文档库中某些文件的人的电子邮件地址。下面是我的权限对象的示例,它是从https://graph.microsoft.com/v1.0/sites/<site id>/drives/<drive id>/items/<item id>/permissions
检索到的。
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('...')/drives('...')/items('...')/permissions",
"value": [
{
"id": "...",
"roles": ["owner"],
"grantedTo": { "user": { "displayName": "testsite - Eigenaars" } },
"inheritedFrom": {}
},
{
"id": "...",
"roles": ["read"],
"grantedTo": { "user": {"displayName": "testsite - Bezoekers"} },
"inheritedFrom": {}
},
{
"id": "...",
"roles": ["write"],
"grantedTo": { "user": { "displayName": "testsite - Leden" } },
"inheritedFrom": {}
},
{
"id": "...",
"roles": [
"write"
],
"grantedToV2": {
"siteGroup": {
"displayName": "Developers",
"id": "120",
"loginName": "Developers"
}
},
"grantedTo": {
"user": {
"displayName": "Developers"
}
},
"inheritedFrom": {}
},
{
"id": "...",
"roles": ["owner"],
"grantedTo": {
"user": {
"email": "testsite@mysharepoint",
"id": "uuid",
"displayName": "testsite - Eigenaars"
}
},
"inheritedFrom": {}
}
]
}
我假设displayName属性中的测试站点是一个组名(可能属于文件驻留的站点的组),但是我看到过在从Graph API的/groups端点检索的组中找不到这个组名的情况。
您还可以看到组Developers,我没有设法在从/groups检索的完整组列表中找到它。
这方面的文档对我来说相当模糊和不清楚。我在某处读到,这种数据的缺乏可能是由于身份验证范围,但我有"良好的模式"。在这个Sharepoint环境中的管理员权限,所以这对我来说似乎很奇怪。
我的主要目标是能够获得访问特定文件的所有用户。
提前感谢!
1。我假设displayName属性中的测试站点是一个组名,但是我已经看到了在从Graph API的/groups端点检索的组中找不到这个组名的情况。
这是因为根据驱动器项权限>>身份集>>标识资源类型引用
标识的显示名。请注意,这可能并不总是可用的或最新的。例如,如果用户更改了其显示名称,API可能会在将来的响应中显示新值,但是当使用
时,与该用户关联的项不会显示为已更改。
这可以解释为什么有时在组中看不到组名。我建议你使用id。
2。我的主要目标是能够获得访问特定文件的所有用户。
是否有用户出现在sharepoint上驱动器项的Has Access部分?对于用户,您应该能够获得权限并使用id来使用grantedToIdentitiesV2中的id值获取directoryObject或grantedToV2它将返回日期类型。
GET https://graph.microsoft.com/v1.0/directoryObjects/{id}?$select=id
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#directoryObjects(id)/$entity",
"@odata.type": "#microsoft.graph.group or user or application",
"id": "id"
}
对于组,用户将是该组的成员。