Google 服务帐户未获得日历 API 授权

2024-04-17

我正在尝试通过服务帐户连接到我们 G Suite 域上的所有日历。

我创建了一个新项目,并在 API 和服务页面中启用了 Google Calendar API。

我创建了一个 Google 服务帐户:

  • A name
  • 似乎适用的角色
  • 生成的json密钥文件
  • 为整个域启用 G Suite

在服务帐户管理页面中,我获取了我的 ID([电子邮件受保护] /cdn-cgi/l/email-protection)

我进入 G Suite 安全模块并转到 ManageOauthClients 页面,在其中输入 ID 并选择 google calendar API (https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/calendar)

它正确识别了我的 ID 并添加了:

1234567890 日历(读写)https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/calendar

其中 1234567890 是 Google 从我那里获取的 ID[电子邮件受保护] /cdn-cgi/l/email-protection input.

现在,我添加了 Google 的 nuget 包和日历 API,并在 C# 命令行应用程序中编写了以下代码:

        var scopes = new[] { CalendarService.Scope.Calendar };

        ServiceAccountCredential credential;

        using (Stream stream = new FileStream("ToprServiceAccount-xxxxyyyyy.json", FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            credential = GoogleCredential.FromStream(stream).CreateScoped(scopes).UnderlyingCredential as ServiceAccountCredential;
        }

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

        var list = service.CalendarList.Get("[email protected] /cdn-cgi/l/email-protection").Execute();

我确保我要求的日历存在。这是我用来实际执行上述所有步骤的帐户中的一个。

但我仍然收到 404 错误,这意味着我很可能没有访问(我自己的)日历的权限。

会不会跟角色有关?我不确定创建服务帐户时要选择什么角色。

此外,当只是尝试获取所有日历的列表时,它是一个空列表。


我发现出了什么问题(来源在这里:https://neal.codes/blog/google-calendar-api-on-g-suite/ https://neal.codes/blog/google-calendar-api-on-g-suite/)

在 G-Suite -> 应用程序 -> 日历 -> 常规设置中,我必须启用共享所有日历的选项,外部人员可以更改日历

进入任何日历并与服务帐户电子邮件共享日历后。那将是[电子邮件受保护] /cdn-cgi/l/email-protection根据我在问题中的样本。

据我所知,这两个步骤在文档中没有提及。很高兴我现在可以使用它了!

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

Google 服务帐户未获得日历 API 授权 的相关文章

随机推荐

  • 从地址获取上一条指令的开头

    我们在缓冲区中查看 x86 操作码 标记当前指针 68 0F 00 6A 90 00 找到下一条指令的开始很容易 因为电流的大小是可以确定的 但是你如何才能准确地猜出前一个的开始呢 68 0F 00 6A 90 总共 5 个字节 结束于 0
  • 如何在 Google Composer 上重新启动气流服务器?

    当我需要在本地重新启动网络服务器时 我会这样做 ps ef grep airflow awk print 2 xargs kill 9 airflow webserver p 8080 D 我如何在 Google Composer 上执行此
  • 未能启用约束。一行或多行包含违反非空、唯一或外键约束的值。 VB.Net 中的错误

    StackOverFlow 中出现了三个类似的问题 但没有人给出答案 如果已找到发生此错误的原因但不知道解决方法 我在用Strongly Typed Dataset对于我的项目 它是作为 DAL 的 dll 创建的 我已使用设计器将 Sql
  • 我无法添加或删除课程

    我正在尝试删除一个类并在一个函数中添加一个类 但是当我点击按钮时什么也没有发生 这是我的代码 function unlikeVerhaal unlike unlike preventDefault document querySelecto
  • 如何使用 JavaScript 从表中的行索引获取行 id

    假设这是我的桌子 table tr td a td tr tr td b td tr table 如何使用表中的行索引获取行 ID 上面只是一个例子 其中 id 是静态的 但在我的例子中 我的 id 是动态的 所以我不能使用document
  • 一个编译器错误让我在 ActionScript 中感到困惑

    首先 我想解释一下 我对 ActionScript 不熟悉 所以不要因为一些基本的错误而责怪我 我刚刚学会了很短的时间 因此 编写 ActionScript 脚本的一些技巧总是值得赞赏的 我不知道编译器为什么说 我的一个类的构造函数不接受任
  • 在打字稿中使用 es-6 符号

    我正在尝试在我的打字稿代码中使用符号 使用 es 5 作为目标 但是 下面的代码会报错TS2304 找不到名称 符号 var sym Symbol 根据路线图 从 1 5 版本开始支持符号 但我想一件事是支持符号 另一件事是将符号转译为 e
  • MVC,模型可以保存/加载其数据吗?

    快速提问 我的数据模型是一个单例对象 它包含我想要存档的名称列表 我的想法是让模型负责加载和保存它自己的数据 该模型的load方法将被调用ViewController s viewDidLoad方法和save by the ViewCont
  • 只能创建一个cardNumber类型的元素

    我正在尝试显示我的条纹组件 但收到此错误 IntegrationError 只能创建一个类型为 cardNumber 的元素 我不知道为什么 因为我在整个应用程序中只使用了一次 有任何想法吗 这是我的索引 import ReactDOM f
  • 创建一个分层的 xml 形式,形成一个类似于书籍描述的“平面”xml

    这是一个后续问题 选择当前元素和当前元素的下一个元素之间的所有元素 https stackoverflow com q 16145859 2115381 即使我不确定创建一个新问题是否是正确的方法 但我还是这样做 因为原来的问题已经回答了
  • 按数据存储 API 中的范围进行过滤

    数据存储 API 文档位于http docs ckan org en ckan 2 2 datastore html http docs ckan org en ckan 2 2 datastore html描述 datastore del
  • 在同一用户的不同设备之间共享 Facebook 访问令牌

    用户可以从不同的设备登录我们的应用程序 我们希望将用户的访问令牌转移到他们登录的所有设备 这样他们就不必在他们使用的每台设备上再次执行 Facebook 登录步骤 在 Facebook 的开发者文档页面之一 https developers
  • matplotlib - 从等高线提取值

    这个问题 答案对 https stackoverflow com questions 5666056 matplotlib extracting data from contour lines显示如何从等高线图中提取顶点 p cs coll
  • 按频率对波形进行颜色编码[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想按本地频率内容显示每个部分中颜色编码的音频波形 基本上与 Serato Traktor 或任何其他
  • 显示当前时间 (EST)

    我创建了一个用户窗体 其中包含一个文本框 该文本框将显示美国东部时间的当前时间 唯一的问题是 反映的时间当然是我们国家的当前时间 所以我想将其转换为 EST 即 12 00从我们的时代开始 Private Sub UserForm Init
  • 如何在extjs中动态设置url和root

    有人能告诉我如何在 Ext JS 中动态设置商店的 url 和 root 吗 我创建了一家像下面这样的商店 我需要更新根并动态设置控制器内的 url Ext define Test store TestStore extend Ext da
  • WSDLException:尝试解析引用的架构时发生错误

    我正在尝试使用 windows xp 上的 eclipse Galileo 和 axis 2 1 4 从本地 WSDL 文件生成代理类 我的问题是 由于 WSDL 中导入的架构 我收到错误 令我烦恼的是
  • 使用 Facebook SDK 4.15.1 在 iOS 10 上使用 Facebook SDK 登录、分享和点赞时获取空白页面

    在我的应用程序中使用 FBSDKLoginKit FBSDKShareKit 登录 共享链接和点赞链接时 我收到此错误 我使用 FBSDKLoginButton 登录 property nonatomic strong IBOutlet F
  • 使用 WHERE 子句的值范围进行查询?

    我有一个 Google 电子表格 我想运行QUERY功能 但我想要WHERE语句来检查一系列值 我基本上是在寻找我会使用的东西INSQL 中的语句 什么是INGoogle 电子表格中的等效项 所以现在我有 QUERY Sheet1 A3 A
  • Google 服务帐户未获得日历 API 授权

    我正在尝试通过服务帐户连接到我们 G Suite 域上的所有日历 我创建了一个新项目 并在 API 和服务页面中启用了 Google Calendar API 我创建了一个 Google 服务帐户 A name 似乎适用的角色 生成的jso