当前位置: 首页 > 知识库问答 >
问题:

Google Calendar API FreeBusy Access使用服务帐户

华永新
2023-03-14

我们构建了一个应用程序,该应用程序试图使用服务帐户访问谷歌日历应用编程接口。我们自己管理应用程序,但是我们尝试访问的日历在一个单独的谷歌办公套件帐户上。我们已经让谷歌办公套件管理员按照此处的步骤,允许根据客户端ID和“https://www.googleapis.com/auth/calendar.readonly.”的身份验证范围访问我们的应用程序

现在,当使用服务帐户尝试访问用户日历数据时,我对如何正确格式化请求有点困惑。具体来说,如果我没有包含“sub”参数,那么请求的工作原理是,我被授予了一个令牌,并且我能够继续发出访问日历的后续请求。然而,在随后的请求中,我被返回,用户日历上显示错误,表明找不到,即我没有访问权限。以下是请求:

String jwtClaimset = '{'+
                          '"iss":"xxxxx@service-account.com",'+
                          '"sub":"xxxxxx@xxxx.com",'+
                          '"scope":"https://www.googleapis.com/auth/calendar.readonly",'+
                          '"aud":"https://www.googleapis.com/oauth2/v4/token",'+
                          '"exp":'+expTime+','+
                          '"iat":'+requestTime+
                            '}';

但是,如果我包含GSuite帐户中的特定电子邮件/用户名以“模拟”,则我根本无法请求令牌,我会出现以下错误:

"error_description":"客户端无权使用此方法检索访问令牌。"

所以我的问题是,我需要sub参数来访问GSuite中的任何用户日历吗?如果需要,您知道为什么会出现这个错误吗?

共有1个答案

公西翊歌
2023-03-14

我不知道发生了什么,也许只是GSuite权限/访问更新需要时间,但现在它工作了。

值得注意的是,我们正在使用子参数及其工作方式(正如我们所怀疑的那样)。

 类似资料:
  • 我正面临着以下问题:我已经创建了一个谷歌服务帐户,现在我正在尝试使用c#对谷歌API和YouTube数据API进行授权API调用。以下是我的示例代码: 代码生成成功,但当我启动程序时,我收到以下错误消息: 系统.IO.File未发现异常:“无法加载文件或程序集”弹跳卡思加密,版本=1.7.4137.9688,区域性=非特定,公钥令牌=a4292a325f69b123“或其依赖项之一。系统找不到指定

  • 我正在使用谷歌服务帐户将MySQL备份从我们的网络服务器推送到谷歌云端硬盘,使用谷歌API PHP客户端脚本设置为cron作业。 我现在想在多个网络服务器上运行相同的脚本,我不知道如何正确配置服务号,应该吗? > 是否在所有服务器上使用相同的服务帐户和服务帐户密钥/凭据? 或者使用相同的服务帐户,但为每个服务器添加服务帐户密钥/凭据? 还是为每台服务器设置单独的服务帐户?

  • 我正在尝试通过服务帐户(客户端电子邮件和p12证书)连接到google doubeclick api,使用python客户端库,如以下示例所示: http://code.google.com/p/google-api-python-client/source/browse/samples/service_account/tasks.py 它给我一个空access_token: 这有什么意义?我有没

  • 我想用gmail API阅读我的gmail收件箱。我需要使用服务帐户,因为我的应用程序没有用户交互。我在请求时收到以下错误: 这是我的代码: 我做错了什么?有人能帮我吗? 当做

  • 我正在尝试使用服务帐户访问目录API(https://developers.google.com/admin-sdk/Directory/v1/reference/users/list)。最简单的任务是列出组织中的用户。通过OAuth2.0 PlayGorund测试,这在我的用户帐户中运行良好。但我需要使用服务帐户。我正在阅读关于双腿OAuth(https://developers.google.

  • 是否可以使用服务帐户访问Google Admin Report SDK? 我有一个非常基本的例子,我正在尝试运行,我总是得到一个400错误返回。我已经验证了密钥和服务ID是正确的,我甚至已经将权限委托给这个服务帐户。难道这就是不可能吗?有人有什么想法吗? 返回的错误如下: {“代码”:401,“错误”:[{“domain”:“global”,“location”:“authorization”,“