我在下面使用Google Drive API V3的代码将所有权从一个用户转移到另一个域中的另一个用户正在抛出此例外。我将服务帐户与授权作品的范围范围内的权限一起使用。
string FileID = "xxxxxxxxxxxxxxxxxxx";
var getRequest1 = OwnerDrive.Files.Get(FileID);
getRequest1.Fields = "owners,name,parents,mimeType,permissions";
var afile = getRequest1.Execute();
foreach (var perm in afile.Permissions)
{
Console.WriteLine(perm.EmailAddress + " : " +
perm.DisplayName + " : " + perm.Role + " : " + perm.Id);
}
// I manually note down the permissionID of the current owner as
"14016095883385444520"
//Set New owner
Permission p = new Permission();
p.Role = "owner";
p.Type = "user";
p.EmailAddress = "newowner@xyz.com";
var updateRequest = OwnerDrive.Permissions.Update(p, FileID,
"14016095883385444520");
updateRequest.TransferOwnership = true;
updateRequest.Execute();
错误异常投掷是:
"消息[资源主体包含不是直接可写的字段。]位置[ - ]原因[fieldnotabletable]域[global]。
新的驱动器V3 API表示使用权限。我在这里想念什么?任何帮助都非常感谢。
我认为您已经击中错误。
我一直在使用Google Apis Explorer
进行测试PATCH https://www.googleapis.com/drive/v3/files/1f3eFRpZM-NAID42B9DPwUOKr6nvXuIxnfVvlQ8H1pNc/permissions/06030588225573437243?transferOwnership=true&key={YOUR_API_KEY}
{
"emailAddress": "xxx@gmail.com"
}
响应:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "The permission role field is required.",
"locationType": "other",
"location": "permission.role"
}
],
"code": 400,
"message": "The permission role field is required."
}
}
请求尝试两个
PATCH https://www.googleapis.com/drive/v3/files/1f3eFRpZM-NAID42B9DPwUOKr6nvXuIxnfVvlQ8H1pNc/permissions/06030588225573437243?transferOwnership=true&key={YOUR_API_KEY}
{
"emailAddress": "xxx@gmail.com",
"role": "owner"
}
响应
{
"error": {
"errors": [
{
"domain": "global",
"reason": "fieldNotWritable",
"message": "The resource body includes fields which are not directly writable."
}
],
"code": 403,
"message": "The resource body includes fields which are not directly writable."
}
}
在这里制作的错误报告发行了73634062