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

无法模拟服务帐户以创建日历事件

寿卜鹰
2023-03-14

我试图实现与谷歌服务号的用户模拟,一直有一段时间的问题,这是我在Java使用的代码:

GoogleCredential credential = GoogleCredential
        .fromStream(TestGoogleCalendarEventCreate.class
            .getResourceAsStream("/ph3-rovigo-313910-6094af96ccfc.json"))
        .createScoped(CalendarScopes.all()).createDelegated("no-reply@dutytree.it");

当我尝试从共享日历中读取事件时,我收到以下身份验证错误:

com.google.api.client.auth.oauth2.TokenResponseException: 401未经授权的邮政https://oauth2.googleapis.com/token

如果我不使用模拟,我可以读取事件,但不能邀请与会者参加新创建的事件。服务号在G-Suite域中启用了域范围权限,如下面的屏幕截图所示。clieint id是服务号用户的客户端ID。是否需要授予任何用户其他权限?

非常感谢。

共有2个答案

薛祯
2023-03-14

在我的情况下,以下工作:

确保将域范围的权限委托给createScoped(…)中请求的所有范围。

在上面的例子中,你使用< code >。create scoped(calendar scopes . all())包含您没有授权的< code > calendar . settings . readonly 。

将其替换为:

.createScoped(ImmutableList.of(CalendarScopes.CALENDAR, CalendarScopes.CALENDAR_EVENTS))
.createDelegated("no-reply@dutytree.it")
魏泰
2023-03-14

我认为您应该使用setServiceAccount tUser

 GoogleCredential credential = new GoogleCredential.Builder()
      .setTransport(httpTransport)
      .setJsonFactory(jsonFactory)
      .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
      .setServiceAccountScopes(DirectoryScopes.ADMIN_DIRECTORY_USERS)
      .setServiceAccountUser(userEmail)
      .setServiceAccountPrivateKeyFromP12File(
          new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
      .build();
 类似资料:
  • 我需要在日历上创建谷歌日历活动,并将其他用户添加为该活动的参与者。其目的是向应用程序用户发送日历事件,而无需征得他们的同意(O-Auth)。 在阅读了谷歌的留档后,我发现我需要一个服务号。所以我从我们的G-Suite的一个电子邮件地址创建了一个项目和一个服务号,noreply@xxxxx.com并为其启用了日历应用编程接口。 我创建并下载了一个密钥对(JSON),其内容是, 根据文档,我开始编写身

  • 问题内容: 上述代码的结果是: 开启。服务帐户客户ID已在GSuite中使用适当的范围进行了授权。 该服务帐户可用于普通凭据。它仅不适用于委托凭证。 我在我们的域中尝试了不同的API(作用域)和不同的用户。 我有一个同事尝试从头开始编写示例,他得到了同样的东西。 问题答案: 我认为您的问题是,在调用Calendar API 之前,您没有对凭据进行授权,但是我在自己的实现中使用了一些区别 使用以下导

  • 要在Google日历中添加事件,我创建了一个Google服务号,从中我获得了客户端ID、服务帐户名称和p12密钥。现在从我的代码中,它正在创建一个事件,但它创建了自己的新日历以插入具有服务号名称的事件。我想在我的Google帐户的默认日历中添加事件。下面是服务号事件插入的工作代码。

  • 我能够使用服务帐户和谷歌日历API在谷歌日历中创建一个事件,其中项目和服务帐户是在谷歌工作区管理员帐户中创建的,在同一个帐户中,我启用了域范围的委派属性。我还没有创建单独的日历,也没有授予访问服务帐户的权限。如果我在CreateDelegate()中使用我的工作区google帐户,则此事件将在'abc@myworkspace.com对于我添加的每个与会者,“日历”和“创建人”属性也是相同的。 所以

  • 我正在创建一个通过EWS在Office 365 (Exchange online)中管理会议的应用程序。该应用程序应使用专用(服务)帐户,这将模拟组织者的帐户,并创建会议请求。该应用程序现在可以工作了,但我不确定在Office 365中创建服务帐户的最佳方式是什么,以及在这种情况下它需要的最低权限是什么。 目前,我在Office 365中创建了一个新用户,并在Exchange Admin中授予其<

  • 我有两个google workspace帐户用于测试。帐户A有一个服务帐户,在帐户B中,我添加了用于域范围委派的服务帐户,该帐户具有读取/写入帐户B中日历所需的权限。 阅读活动和日历很有效。但是,当尝试使用帐户B中的资源日历中的服务帐户创建事件时,我遇到以下错误: 添加的权限: 如果我们在一个Google工作空间帐户中进行测试,它就可以工作。 这是密码