Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 共享OneDrive文件的Graph API的不同响应_C#_Microsoft Graph Api_Onedrive_Restsharp - Fatal编程技术网

C# 共享OneDrive文件的Graph API的不同响应

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

我将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-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的用户设置中,我看不到这个地址