c# – Google Drive API – 从服务帐户转移所有权
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Google Drive API – 从服务帐户转移所有权,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2209字,纯文字阅读大概需要4分钟。
内容图文
![c# – Google Drive API – 从服务帐户转移所有权](/upload/InfoBanner/zyjiaocheng/781/29e96124e05a4b9c976e2c8b5ffe583d.jpg)
我正在尝试使用以下代码将所有权从服务帐户创建的文档转移到位于同一Google Apps帐户中的其他用户,但我收到以下错误
资源主体包括不可直接写入的字段. [403]
错误[消息[资源主体包括不可直接写入的字段.]位置[ – ]原因[fieldNotWritable]域[全局]]
var service = GetService();
try
{
var permission = GetPermission(fileId, email);
permission.Role = "owner";
var updatePermission = service.Permissions.Update(permission, fileId, permission.Id);
updatePermission.TransferOwnership = true;
return updatePermission.Execute();
}
catch (Exception e)
{
Console.WriteLine("An error occurred: " + e.Message);
}
return null;
评论//权限.Role =“所有者”;返回以下错误
当权限角色为“所有者”时,必须启用transferOwnership参数. [403]错误[消息[当权限角色为’所有者’时,必须启用transferOwnership参数.)位置[transferOwnership – 参数]原因[禁止]域[全局]]
分配任何其他权限工作正常.因此,这是服务帐户的限制,无法将所有权转移到不使用@ gserviceaccount.com电子邮件地址的任何其他帐户(即our-project@appspot.gserviceaccount.com\u0026gt; email@domain.com )?
email@domain.com电子邮件地址已创建并在Google Apps中进行管理.
在这种情况下,它是不可能实现的,任何指针在哪里看下一步?我们需要多个用户能够临时创建文档,并通过API动态分配权限和转移所有权.
谢谢
解决方法:
我找到了答案,并发布给遇到此问题的其他人.
>您不能使用Google推荐的“服务帐户密钥JSON文件”.
>您需要使用p.12证书文件进行身份验证.
>为模拟帐户创建驱动器服务的代码如下.
public DriveService GetService(string certificatePath, string certificatePassword, string googleAppsEmailAccount, string emailAccountToMimic, bool allowWrite = true)
{
var certificate = new X509Certificate2(certificatePath, certificatePassword, X509KeyStorageFlags.Exportable);
var credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(googleAppsEmailAccount)
{
Scopes = new[] { allowWrite ? DriveService.Scope.Drive : DriveService.Scope.DriveReadonly },
User = emailAccountToMimic
}.FromCertificate(certificate));
// Create the service.
return new DriveService(new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName
});
}
>您需要按照列出的步骤here将域范围的权限委派给服务帐户.
>完成第4步后,需要5到10分钟.
>您现在可以在’emailAccountToMimic’用户下创建文档,该用户在创建过程中将它们设置为所有者.
内容总结
以上是互联网集市为您收集整理的c# – Google Drive API – 从服务帐户转移所有权全部内容,希望文章能够帮你解决c# – Google Drive API – 从服务帐户转移所有权所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。