假设我有一个谷歌帐户some.account@gmail.com
,其中项目Project-1
(在谷歌开发者控制台中配置为谷歌应用引擎应用程序)和一个服务号,其中包含属于它的电子邮件地址12..@developer.gserviceaccount.com
。
我知道如何使用这个服务帐户创建日历并以编程方式操作其条目:我使用Google API客户端库(Java版本,带有服务帐户的凭据)在我的Google App Engine应用程序中调用Google calendar API,它就是这么做的。然而,任何这样创建的日历似乎都明显属于服务账户,而不是我的谷歌账户。我通过以下观察得出结论:
My Calendars
下。其他日历
|添加朋友的日历
和服务号的电子邮件地址来访问这样的日历时,我可以发送请求,但它永远不会得到回复(大概是因为服务号的电子邮件地址不是真正的电子邮件地址)。CalendarListEntry#隐藏
,因此默认的false
应该适用。所以我的问题是:如何在普通的Google calendar Web UI中访问通过Google calendar API(在我的例子中是Java客户端)编程创建的日历和日历条目。例如,服务帐户是否可以与其拥有的谷歌帐户共享其日历,或者我是否可以直接在UI中使用其服务帐户凭据操纵谷歌帐户的日历。
我意识到之前有一些关于同一主题的问题,但是到目前为止它们还没有帮助我解开这个谜。
我以为你必须用PRN参数创建日历(这几乎把你现有的谷歌账户地址欺骗到了日历的“所有者”身份上)
因此,使用prn参数将允许您使用服务帐户身份验证(例如)在您的姓名(谷歌地址)中添加事件。
如果发现使用prn参数的讨论
根据(过时的)文档,您必须调用。setServiceAccountUser(“user@example.com“
,事件将显示在该用户的日历上。
https://developers.google.com/identity/protocols/OAuth2ServiceAccount#authorizingrequests
委派全域权限
如果您已委派对服务帐户的全域访问权限,并且希望模拟用户帐户,请使用Google Credential factory的setServiceAccountUser方法指定用户帐户的电子邮件地址。例如:
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(emailAddress)
.setServiceAccountPrivateKeyFromP12File(new File("MyProject.p12"))
.setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
.setServiceAccountUser("user@example.com")
.build();
它必须是谷歌办公套件域的服务号,并且您必须启用谷歌办公套件域范围的委托。
您必须以编程方式共享服务号创建的日历。日历归服务号所有。
你所尝试的:
以编程方式与您的帐户共享日历,记录日历唯一id,然后在UI中输入。
我有一个应用程序使用s2s与谷歌日历API的连接。我需要在不同的用户日历中创建事件。若要使之成为可能,用户应转到日历的设置并将其日历共享到服务帐户。但我想为用户简化这一点 - 这样他们就不需要去他们的日历设置。我没有用于用户交互的界面 - 这是一个机器人。如何以其他方式访问用户的日历?
我能够使用服务帐户和谷歌日历API在谷歌日历中创建一个事件,其中项目和服务帐户是在谷歌工作区管理员帐户中创建的,在同一个帐户中,我启用了域范围的委派属性。我还没有创建单独的日历,也没有授予访问服务帐户的权限。如果我在CreateDelegate()中使用我的工作区google帐户,则此事件将在'abc@myworkspace.com对于我添加的每个与会者,“日历”和“创建人”属性也是相同的。 所以
我有两个google workspace帐户用于测试。帐户A有一个服务帐户,在帐户B中,我添加了用于域范围委派的服务帐户,该帐户具有读取/写入帐户B中日历所需的权限。 阅读活动和日历很有效。但是,当尝试使用帐户B中的资源日历中的服务帐户创建事件时,我遇到以下错误: 添加的权限: 如果我们在一个Google工作空间帐户中进行测试,它就可以工作。 这是密码
接下来,我生成了自己的OAuth2客户机ID并使用它。这种方法很简单,直到我开始收到来自Google的“匿名使用过期”错误,一段时间后我意识到这是因为密钥没有启用只读日历范围。 我的下一个想法是公开日历,并使用静态API密钥,但日历是从一个名为Peak Pro的预订服务中同步的,该服务用参加活动的客户的姓名、电子邮件和电话号码填充日历描述。我不能公开揭露那些。 接下来,我被吸引到了CalDAV A
是否有人有链接或可以提供Java谷歌应用程序引擎项目的代码,该项目只是与谷歌日历交互。假设从日历中获取活动。 Google Sample calendar-app engine-Sample在从HG检出后无法编译,我曾尝试搜索教程并创建自己的教程,只是运气好而已。 我已经设置了一个 API 访问项目来获取客户端机密.json。
假设我被授予访问其他用户日历的权限。我可以在Google calendar web UI的“其他日历”下成功地查看该日历。 该日历可以通过Caldav访问吗?如果是,怎么做? 我的CalDAV客户端开始查看https://apidata.googleusercontent.com/CalDAV/v2,并通过oauth2进行身份验证。它遵循当前用户主体URL,并从那里到日历主页集。在calendar