从系统帐户为用户创建 ServiceAccountCredential

2023-12-09

我使用以下代码通过系统登录(域范围内的身份验证)代表用户进行操作。我发现实现此目的的唯一示例使用反射来设置用户。我知道这不是完成此任务的正确方法,所以我想知道是否有人可以帮助我举一个如何解决此问题的示例

ServiceAccountCredential credential = 
    GoogleCredential.FromJson(GOOGLE_SYSTEM_USER_AUTH_INFORMATION)
        .CreateScoped(Scopes)
        .UnderlyingCredential as ServiceAccountCredential;

var userField = typeof(ServiceAccountCredential).GetField("user", 
BindingFlags.NonPublic | BindingFlags.Instance);
userField?.SetValue(credential, GOOGLE_CALENDAR_USERNAME); //Act in the guise of the normal user GOOGLE_CALENDAR_USERNAME


service = new CalendarService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = ApplicationName, 
});

由于假设了解需要哪些属性,下面的原始答案很脆弱。现在明显简单了:

var credential = GoogleCredential.FromJson(GOOGLE_SYSTEM_USER_AUTH_INFORMATION)
    .CreateScoped(Scopes)
    .CreateWithUser(GOOGLE_CALENDAR_USERNAME);

这是我的做法,通过以下方式同时设置范围和新用户ServiceAccountCredential.Initializer:

ServiceAccountCredential original = (ServiceAccountCredential)
    GoogleCredential.FromJson(GOOGLE_SYSTEM_USER_AUTH_INFORMATION).UnderlyingCredential;

var initializer = new ServiceAccountCredential.Initializer(original.Id)
{
    User = GOOGLE_CALENDAR_USERNAME,
    Key = original.Key,
    Scopes = Scopes
};
var credentialForUser = new ServiceAccountCredential(initializer);

现在这给了你一个ServiceAccountCredential而不是一个GoogleCredential。这就是您当前的代码所使用的,所以应该没问题 - 但如果有一种简单的方法来获取GoogleCredential也为此。我们应该让这一切变得更简单 - 我已经提出问题为了那个原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从系统帐户为用户创建 ServiceAccountCredential 的相关文章

  • 为什么libc++的shared_ptr实现使用完整内存屏障而不是宽松内存屏障?

    在boost的实现中shared ptr 它用放松内存排序以增加其引用计数 https github com boostorg smart ptr blob master include boost smart ptr detail sp
  • 迭代变量并查找特定类型实例的技术

    我想迭代进程中内存中的变量 通过插件动态加载 并查找特定类型的实例 以前我可以找到特定类型 或内存中的所有类型 我可以创建类型的实例 我可以获取作为不同类型的字段包含的实例 但我无论如何都不知道只是 搜索 特定类型的实例 一种方法是使用 W
  • 向 ExpandoObject 添加方法时,“关键字 'this' 在静态属性、静态方法或静态字段初始值设定项中无效”

    我尝试向 ExpandoObject 添加一个动态方法 该方法将返回属性 动态添加 给它 但它总是给我错误 我在这里做错了什么吗 using System using System Collections Generic using Sys
  • 显示异常时的自定义错误消息:从客户端检测到潜在危险的 Request.Form 值

    我在我的 Web 应用程序中使用 ASP NET 的登录控件 当发生此异常时 我想在标签上显示一种有趣的错误类型System Web HttpRequestValidationException A potentially dangerou
  • 如何使用recv()检测客户端是否仍然连接(并且没有挂起)?

    我写了一个多客户端服务器程序C on SuSE Linux 企业服务器 12 3 x86 64 我为每个客户端使用一个线程来接收数据 我的问题是 我使用一个终端来运行服务器 并使用其他几个终端来运行服务器telnet到我的服务器 作为客户端
  • POCO HTTPSClientSession 发送请求时遇到问题 - 证书验证失败

    我正在尝试使用 POCO 库编写一个向服务器发出 HTTPS 请求的程序 出于测试目的 我正在连接到具有自签名证书的服务器 并且我希望允许客户端进行连接 为了允许这种情况发生 我尝试安装InvalidCertificateHandler这是
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 如何从网站下载 .EXE 文件?

    我正在编写一个应用程序 需要从网站下载 exe 文件 我正在使用 Visual Studio Express 2008 我正在使用以下代码 private void button1 Click object sender EventArgs
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 当“int”处于最大值并使用 postfix ++ 进行测试时,代码定义良好吗?

    示例 未定义行为的一个示例是整数溢出的行为 C11dr 3 4 3 3 int溢出是未定义的行为 但这是否适用于存在循环的以下内容 并且不使用现在超出范围的副作用i 特别是 这是否后缀增量规格帮助 结果的值计算在副作用之前排序 更新操作数的
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触

随机推荐

  • 找不到虚拟机选项文件(Pycharm 社区 5.03)

    每当我尝试启动 Pycharm 时 我都会收到消息 找不到虚拟机选项文件 由于这个原因 Pycharm 无法工作 我想你说的是下载后的第一次启动 那么重要的是你要跑pycharm sh来自bin文件夹 vm 选项文件也位于此处 并且脚本中的
  • jQuery:如何独立获取xml系统?

    Suppose xmlNode是一个XML DOM节点 如何独立获取它的XML系统呢 对于 IE 来说是xmlNode xml 对于网景来说 它是new XMLSerializer serializeToString xmlNode 在 j
  • Android Room - 使用 LIKE 选择查询

    我正在尝试进行查询以搜索名称包含文本的所有对象 Query SELECT FROM hamster WHERE name LIKE arg0 fun loadHamsters search String Flowable
  • 如何读取/写入超过 2 GB 大小的文件?

    所以 我没有一个想法来解决这种情况 我有一个函数可以通过替换我想要的值来修补文件 但我试图修补的文件大约是 4 5GB 这是函数 private static readonly byte PatchFind 0x74 0x72 0x79 p
  • Python:更改嵌套列表的值

    因此 我使用嵌套列表来存储一些数据 但在更改其中一个子列表的特定值时遇到了问题 if attributes 3 W self board 3 3 W 数字是我用来测试的占位符 board 是一个类变量 创建如下 我正在尝试创建用户指定的网格
  • 标点符号后的第一个字母大写

    比如我有这样一句话 hello my name is Jess what is your name 我想把它改成 Hello My name is Jess What is your name 我想出了这段代码 但在将所有内容重新连接在一起
  • 行驶距离区域

    有没有办法通过 Google Maps API 确定给定中心点的给定驾驶时间内的边界多边形 如果做不到这一点 有没有一种方法可以计算驾驶时间函数的倒数 也就是说 不是 从 A 点到 B 点需要多少分钟 而是询问 我会走多远 在一定的分钟内从
  • 将以 2 为基数的二进制数字字符串转换为 int

    我只是想将一个以 2 为基数的二进制数字字符串转换为 int 如下所示 gt gt gt 11111111 fromBinaryToInt 255 有没有办法在Python中做到这一点 您使用内置的int 函数 并将输入数字的基数传递给它
  • Eclipse 崩溃“java 已启动但返回退出代码 = -805306369”

    我知道有一个相同的帖子here但是所提出的解决方案都没有改变任何东西 而且它们已经很老了 与 Java6 相关的问题 并且似乎指的是与 Eclipse 相关的错误 我的问题是当我在开发时面向 RCP 和 RAP 开发人员的 Eclipse
  • 如何使用正则表达式只替换括号内的内容?

    如何使用正则表达式只替换括号内的内容 String This is my string 123 我想用 456 代替 123 Desired String This is my string 456 我的尝试 regex re sub re
  • 从 PowerShell 的列表中选择一个项目

    我正在使用 PowerShell 进行 api 调用 我得到 3 个输出作为调用结果 ID 1 Name Abc Location London 我想将 ID 传递给一个新变量 我怎样才能在powershell中实现这一点 谢谢 您可以使用
  • 使用 SwiftUI ForEach 从 NSOrderedSet 获取字符串值

    Using 这个问题 答案我可以使用 ForEach 来使用从 CoreData 中的一对多关系创建的 NSOrderedSet 但是我似乎无法访问存储在 Core Data 实体中的字符串属性 我有两个 CoreData 实体 客户端和会
  • Swift 中根据属性删除数组对象

    我有一个像这样的自定义数组 我想删除学生 ID 为 4 的元素 var strNames Student id 1 name ghj Student id 4 name def Student id 9 name bkl 以经典的方式 我确
  • JSON 数据 - 已解析或“评估”

    从安全角度来看 我认为简单地对传入的 JSON 数据进行 评估 是一个严重错误 如果你得到像下面这样的数据 你就会遇到一些问题 someData function alert i m in ur code hackin ur page 我想
  • 多次具有相同键的红黑树:将集合存储在节点中还是将它们存储为多个节点?

    显然你可以做任何一个 但前者更常见 您为什么选择后者 它是如何运作的 我读到了这个 http www drdobbs com cpp stls red black trees 184410531 这让我觉得他们做到了 它说 insert a
  • R 将每日数据与刻度数据合并

    感谢您指向 na locf Darren 更新的示例和结果如下 我有报价数据 我已将其汇总到每日数据中 以便计算每日波动性 现在我已经创建了每日波动率 我想再次将每日数据与报价数据合并 但是 我怀疑由于每日数据和分时数据的索引差异 合并仍然
  • numpy读取带有复数的.csv

    堆栈溢出 我有一个包含复数的矩阵 例如 2 2982235934153075E 11 2 1179547211742553E 9i 我需要将其导入到numpy数组中 我一直在使用genfromtext file 解析我所有其他的真实值 但我
  • 发生了错误。请联系您的系统管理员。 (6632) Jasper 服务器 6.2 中出现错误

    我正在使用 Jasper 报告 TIBCO Jaspersoft Studio 6 2 0 final Jasper 服务器 JasperReports Server 社区版 v6 2 0 我将报告书模板 Jasper 报告发布到 Jasp
  • 将 CURL 转换为 URLRequest

    我正在尝试将 Swagger 给我的以下卷曲请求转换为 URLRequest curl X GET header Accept application json header Authorization key ttn account v2
  • 从系统帐户为用户创建 ServiceAccountCredential

    我使用以下代码通过系统登录 域范围内的身份验证 代表用户进行操作 我发现实现此目的的唯一示例使用反射来设置用户 我知道这不是完成此任务的正确方法 所以我想知道是否有人可以帮助我举一个如何解决此问题的示例 ServiceAccountCred