C# 共享OneDrive文件的Graph API的不同响应
我将graph api与RestSharp一起使用,以授予用户读取OneDrive文件的权限:C# 共享OneDrive文件的Graph API的不同响应,c#,microsoft-graph-api,onedrive,restsharp,C#,Microsoft Graph Api,Onedrive,Restsharp,我将graph api与RestSharp一起使用,以授予用户读取OneDrive文件的权限: RestClient client = new RestClient("https://graph.microsoft.com/v1.0/me/drive/root:/" + parentFolder + "/" + file + ":/invite"); var request = new RestRequest(Method.POST); request.AddHeader("Cache-Cont
RestClient client = new RestClient("https://graph.microsoft.com/v1.0/me/drive/root:/" + parentFolder + "/" + file + ":/invite");
var request = new RestRequest(Method.POST);
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer " + accessToken);
request.AddParameter("application/json", "{\"recipients\": [{ \"email\": \"" + email + "\" } ], \"requireSignIn\": true, \"sendInvitation\": false, \"roles\": [\"read\"] }", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
根据成功案例,响应应(通常是)采用以下形式:
{
"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#Collection(permission)",
"value":[
{
"@odata.type":"#microsoft.graph.permission",
"id":"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY",
"roles":[
"read"
],
"grantedTo":
{
"user":
{
"id":"88902115-1090-4c29-9266-1b16b0a4cf64",
"displayName":"Test User"
}
}
}
]
}
{
"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#Collection(permission)",
"value":[
{
"@odata.type":"#microsoft.graph.permission",
"roles":[
"read"
],
"invitation":
{
"signInRequired":true
},
"link":
{
"type":"view",
"webUrl":"https://mydomain-my.sharepoint.com/:w:/g/personal/userindomain/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst"
}
}
]
}
但有时我会得到以下形式的回复:
{
"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#Collection(permission)",
"value":[
{
"@odata.type":"#microsoft.graph.permission",
"id":"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY",
"roles":[
"read"
],
"grantedTo":
{
"user":
{
"id":"88902115-1090-4c29-9266-1b16b0a4cf64",
"displayName":"Test User"
}
}
}
]
}
{
"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#Collection(permission)",
"value":[
{
"@odata.type":"#microsoft.graph.permission",
"roles":[
"read"
],
"invitation":
{
"signInRequired":true
},
"link":
{
"type":"view",
"webUrl":"https://mydomain-my.sharepoint.com/:w:/g/personal/userindomain/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst"
}
}
]
}
首先,是否可以为同一用户反复使用Invite
,或者我应该检查他们是否已经拥有权限,并且仅在他们没有所需权限时使用Invite
(需要更多调用Graph API)
第二,为什么我有时会得到这种替代反应?我是否可以始终忽略其WebUrl并使用创建文件时检索和存储的DriveItem的WebUrl
更多信息:这似乎与我的域名有关。我的用户以aaa身份登录。bbb@mydomain.co.uk. 这会给出假定正确的响应(没有webUrl)。联机查看OneDrive文件夹,我可以看到权限已授予,但DriveItem的webUrl会给用户一个权限错误,并且不会打开文件。如果我使用断点并将电子邮件地址更改为aaa。bbb@mydomain.onmicrosoft.com,我得到第二个响应,用户可以使用响应中的webUrl打开文件。奇怪的是,这是一个从未拥有aaa地址的新用户。bbb@mydomain.onmicrosoft.com在Office Admin的用户设置中,我看不到这个地址