Google Drive API/SDK 转让所有权

2023-11-29

我试图将特定文件的所有权转移给另一个用户。

总代码

foreach (Permission permission in RetrievePermissions(service(), file.Id))
        {
            if (permission.Role == EnumClass.PERMISSIONROLE.OWNER.ToText())
            {
                //Downgrade Owner Writer
                UpdatePermission(service(), file.Id, permission.Id, EnumClass.PERMISSIONROLE.WRITER);
                //Create New Writer
                InsertPermission(service(), file.Id, ownerMail, EnumClass.PERMISSIONROLE.WRITER);

                foreach (Permission thisPermission in RetrievePermissions(service(), file.Id))
                {   //Update Writer to Owner
                    if (thisPermission.Name == "Person X")
                    {
                        //Set Person X as new Owner
                        UpdatePermission(service(), file.Id, thisPermission.Id, EnumClass.PERMISSIONROLE.OWNER);
                    }
                }
            }
        }

更新权限方法

public static Permission UpdatePermission(DriveService service, String fileId, String permissionId, EnumClass.PERMISSIONROLE ROLE)
    {
        try
        {
            // First retrieve the permission from the API.
            Permission permission = service.Permissions.Get(fileId, permissionId).Execute();
            permission.Role = ROLE.ToText();

            //if new Role is Owner, Downgrad current Owner
            if (ROLE == EnumClass.PERMISSIONROLE.OWNER)
            {
                var myPermission = service.Permissions.Update(permission, fileId, permissionId);
                myPermission.TransferOwnership = true;

                foreach (Permission per in RetrievePermissions(service, fileId))
                {
                    if (per.Role == EnumClass.PERMISSIONROLE.OWNER.ToText())
                    {
                        per.Role = EnumClass.PERMISSIONROLE.WRITER.ToText();
                    }
                }
            }
            return service.Permissions.Update(permission, fileId, permissionId).Execute();
        }

        catch (Exception e)
        {
            Console.WriteLine("An error occurred: " + e.Message);
        }
        return null;

插入权限方法

 public static Permission InsertPermission(DriveService service, String fileId, String userMail, EnumClass.PERMISSIONROLE Role)
    {
        Permission newPermission = new Permission();
        newPermission.Name = userMail;
        newPermission.Value = userMail;
        newPermission.Type = EnumClass.PERMISSIONTYPE.USER.ToText();
        newPermission.Role = Role.ToText();

        try
        {
            return service.Permissions.Insert(newPermission, fileId).Execute();
        }
        catch (Exception InsertError)
        {
            Console.WriteLine("Error inserting permission for " + userMail + Environment.NewLine + "Error on Insert: " + InsertError.Message);
        }
        return null;
    }

Error

Google.Apis.Requests.RequestError 权限不足 文件 [403] 错误 [ 消息 [此文件的权限不足] 位置[ - ] 原因[禁止] 域[全局] ]

我目前使用的是 ServiceAccount。
感谢所有帮助!


您是否尝试过使用模仿?

var initializer = new ServiceAccountCredential.Initializer(ServiceAccountEmail)
{
    Scopes = new[] { DriveService.Scope.Drive },
    User = "[email protected]"
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Drive API/SDK 转让所有权 的相关文章

  • 在子目录中构建共享库

    我正在尝试构建一个使用一些 C 代码的 R 包 我有一个编译为可执行文件的 C 库 可以从命令行调用 有一个与之关联的 Makefile 我正在尝试获取信息here http cran r project org doc manuals R
  • 使用索引避免迭代器失效,维护干净的接口

    我创建了一个MemoryManager
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • 外部剃刀视图看不到外部模型

    我对外部剃刀视图有疑问 在我的项目中 我有主 mvc Web 程序集和动态加载的外部类库程序集 来自 DB 及其自己的控制器 视图和模型 这些程序集在运行时不会直接引用和加载 我能够通过为控制器创建自定义控制器工厂 为视图创建自定义虚拟路径
  • 错误 C2065:'cout':未声明的标识符

    我正在处理我的编程作业的 驱动程序 部分 但我不断收到这个荒谬的错误 错误 C2065 cout 未声明的标识符 我什至尝试过使用std cout但我收到另一个错误 IntelliSense 命名空间 std 没有成员 cout 当我宣布u
  • ObjectTrackingEnabled 和 linq-to-sql

    I read here http www sidarok com web blog content 2008 05 02 10 tips to improve your linq to sql application performance
  • 命令中带空格的 Windows C 系统调用

    我无法使用名称和参数中的空格进行系统调用 例如 system c program files something example exe c my files example txt 我尝试过各种我知道的方法来逃避 但没有任何效果 我努力了
  • 使用私有构造函数的 C# 单元测试类?

    好吧 我刚刚收到一个作业 我必须对具有私有构造函数的类执行单元测试 现在 当所有方法也都是非静态时 我该如何在不初始化类的情况下进行单元测试 有什么方法可以对具有私有构造函数的类进行单元测试 无需反射 如果您无法将类公开 您仍然可以通过以下
  • 如果 .txt 文件不存在,则创建一个,如果存在则追加新行

    我想创建一个 txt 文件并写入它 如果该文件已经存在 我只想添加更多行 string path E AppServ Example txt if File Exists path File Create path TextWriter t
  • 如何在Windows Azure上调用ffmpeg.exe转换音频文件?

    我在 Windows Azure 上运行 Web 角色来接收 AAC 音频文件 通过 base64 字符串上传 并将它们存储到 blob 中 现在效果很好 接下来 我还必须将它们转换为 MP3 并将 MP3 存储到 blob 中 我决定使用
  • WPF MVVM后台打印数据绑定问题

    我正在使用 wpf mvvm 开发一个销售点应用程序 在交易生命周期的许多阶段 都会在后台打印收据 我已经使用其他示例在后台生成和打印收据 我正在后台打印一个 UserControl 一切看起来都很棒 然后 我为该控件创建了 ViewMod
  • 除法时的小数舍入误差 (C#)

    我基本上有四个数字 比如 100 200 300 400 我需要计算概率为 100 100 200 300 400 200 100 200 300 400 等等在 当我使用小数数据类型来存储这些概率时 由于舍入问题 它们不会达到 1 在不使
  • 是否有理由为什么用 XmlInclude 修饰的基类在序列化时仍然会抛出类型未知的异常?

    我将简化代码以节省空间 但所提供的内容确实说明了核心问题 我有一个类 它的属性是基类型 有 3 个派生类可以分配给该属性 如果我将任何派生类分配给容器并尝试序列化容器 XmlSerializer 会抛出可怕的错误 类型 x 不是预期的 使用
  • 如何通过 Excel 互操作对象自动调整列大小?

    下面是我用来将数据加载到 Excel 工作表中的代码 但我希望在加载数据后自动调整列的大小 有谁知道自动调整列大小的最佳方法 using Microsoft Office Interop public class ExportReport
  • 合并大文件的最佳方法是什么?

    我必须合并数千个大文件 每个大约 200MB 我想知道合并这些文件的最佳方法是什么 行将有条件地复制到合并文件中 可以使用 File AppendAllLines 或使用 Stream CopyTo 吗 使用 File AppendAllL
  • 如何进行平衡组捕获?

    假设我有这个文本输入 tes tR R abc aD mnoR xyz 我想提取 ff 输出 R abc R xyz D mnoR xyz R R abc aD mnoR xyz 目前 我只能使用平衡组方法提取组内的内容 如中所示msdn
  • PC 上 XNA 中的信箱和缩放

    有没有一种方法可以让我基本上以 1080p 或 720p 作为默认分辨率来开发 XNA 游戏 然后根据设置的分辨率将游戏中的所有内容缩放到适当的大小 而不必在每个 Sprite 中设置缩放因子Draw 方法 我的想法是 我可以基于 1080
  • 64 位随机生成器种子

    我目前正在运行一个具有 8 个以上管道 线程 的多线程模拟应用程序 这些管道运行非常复杂的代码 该代码取决于种子生成的随机序列 然后该序列被归结为单个 0 1 我希望在将种子从主线程传递到处理管道后 这种 随机处理 具有 100 的确定性
  • Unity 错误“内部构建系统错误。后端退出,代码为 -1073740791。”摧毁/杀死了我的项目

    好吧 我可能在这里夸大了 但这是真的 当我开始打开它时 该项目由于错误 内部构建系统错误 后端退出 代码为 1073740791 而被破坏 应用程序 这个项目已经在Google Play上发布了 也许和设置有关 有人可以帮忙吗 完整错误 I
  • Json.net 将数字属性序列化为字符串

    我正在使用 JsonConvert SerializeObject 序列化模型对象 服务器期望所有字段都是字符串 我的模型对象具有数字属性和字符串属性 我无法向模型对象添加属性 有没有办法将所有属性值序列化为字符串 我必须只支持序列化 而不

随机推荐

  • 在通过 $sce.trustAsHtml 添加的字符串中绑定 Angular js 中的数据

    我正在为遗留系统实现一个网络界面 因此来自服务器的数据是固定的 该服务器数据指定要向用户显示的各种控件 例如组合框 按钮等 我已经解析了服务器数据并通过 sce trustAsHtml 添加了控件的 HTML 问题是控件没有绑定到模型 如果
  • 如何动态获取文本框中datagridview列的总和

    我想获得 datagridview 列的总和并将其显示在文本框中 每次输入后 总和应动态更改 为此 我使用文本框的 textChanged 事件 但是当输入内容时 它不会显示任何结果 我想在文本框中动态获取结果 我想避免使用求和按钮 下面是
  • 导出android库项目以供重用,无需源代码

    出于安全原因 我需要导出没有源代码的库项目 不幸的是 库项目中生成的 jar 文件不包含资源 我不能指望这个图书馆的用户能够处理图书馆所需的任何资源 已经有类似的帖子了 但我还没有看到解决方案 以下食谱曾经有效 尽管我最近没有尝试过 步骤
  • Java 进程 - 无法解压缩 zip 文件

    我正在尝试解压缩一些 zip 文件 它大约有 65 兆 代码片段如下 这个方法实际上解压一个文件 public synchronized void execute Path zipFile final ProcessBuilder buil
  • 动态创建匿名类型? [复制]

    这个问题在这里已经有答案了 我想创建一个可以动态设置属性名称的匿名类型 它不必是匿名类型 我想要实现的就是动态设置任何对象属性名称 它可以是 ExpandoObject 但字典对我不起作用 您有什么建议 Only ExpandoObject
  • Python 3.2.2 open('C:\file.txt') 不起作用

    诚然 我是一个新手 但是 我认为 我按照教程所说的进行了操作 对于我安装的版本 但我无法让 Python 读取文件 其他人遇到过长文件名或路径的问题 但我让我的文件名或路径简短而甜蜜 所以我想 文件本身在一行中包含一个单词 print st
  • XSLT 中的词频计数器

    我正在尝试用 XSLT 制作一个词频计数器 我希望它使用停用词 我开始了迈克尔 凯的书 但我很难让停用词发挥作用 此代码适用于任何源 XML 文件
  • 为空数据框创建异常

    我正在接受用户输入来获取特定股票的历史数据 我想处理 2 个可能的错误 第一个是由于错误输入而生成的错误 并且代码生成错误 第二个是如果输入错误但代码被执行并且我得到一个空数据框 while True try us input Enter
  • 获取对 std::thread::_M_start_thread 的未定义引用

    我正在构建一个使用我从源代码构建的第三方库 Box2D MT 的应用程序 链接时 我收到此未定义的引用错误 b2Threading cpp text ZNSt6threadC2IM12b2ThreadPoolFviEJPS1 iEEEOT
  • 滚动 PCA 并绘制主成分的比例方差

    我使用以下代码来执行 PCA PCA lt prcomp Ret1 center TRUE scale TRUE summary PCA 我得到以下结果 Importance of components PC1 PC2 PC3 PC4 St
  • 替换函数内的异步加载

    我正在使用 Javascript 进行替换 我做了这样的事情 var replacedText originalText replace regex function value i return value some additional
  • 如何为具有 SRC、OBJ 和 BIN 子目录的 C 项目创建 Makefile?

    几个月前 我想出了以下通用的Makefile对于学校作业 Generic Makefile Author email protected Date 2010 11 05 Changelog 0 01 first version projec
  • Thymeleaf 嵌套迭代触发 org.thymeleaf.exceptions.TemplateInputException

    我正在尝试迭代对象列表并生成一个div class card deck every 4对象和嵌套div class card 对于每个对象 这是生成异常的代码line 234 UPDATE Note line 234中提到html并拥有由于
  • 如何在使用出站网关上传文件之前检查 aws s3 存储桶是否可用

    在 Spring Boot 应用程序中使用 aws s3 出站适配器 尝试上传 s3 存储桶中的文件 想在上传文件之前检查存储桶是否可用 如果存储桶不可用 则需要抛出错误 对此提出建议
  • 在 javascript (lodash) 中合并部分重复的数组

    我有一个很大的 javascript 数组 其中包含一些人在不同年份购买的汽车 简化后的数组是这样的 const owners name john hasCar true yearBought 2002 name john hasCar t
  • 具有多个已定义的入口点错误

    我有以下代码 namespace WpfApplication2
  • 从异步方法返回多个结果?

    我目前有一个看起来像这样的方法 typedef void MyCallback int status String body void makeRequest String url MyCallback callback async if
  • Dynamic 类型如何工作以及如何使用它?

    我听说与Dynamic以某种方式可以在 Scala 中进行动态类型 但我无法想象它会是什么样子或者它是如何工作的 我发现一个人可以继承特质Dynamic class DynImpl extends Dynamic The API说可以这样使
  • Volley 收到错误响应

    我正在使用齐射发送一些帖子数据 这是我的代码 这是后台服务的一个片段 如果您还需要其他文件 请告诉我 我已经添加了互联网权限 public void onLocationChanged final Location location mCu
  • Google Drive API/SDK 转让所有权

    我试图将特定文件的所有权转移给另一个用户 总代码 foreach Permission permission in RetrievePermissions service file Id if permission Role EnumCla