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

使用Angular 2实现谷歌日历API

王兴腾
2023-03-14

我尝试使用Angular 2连接到Google日历API,以便可以在我正在构建的Web应用程序上显示即将发生的事件。我浏览了谷歌日历JavaScript快速入门教程,尽管所有内容都在index.html文件中,但它都运行完美。我能够设置谷歌应用编程接口,并在我的JavaScript代码中放置客户端ID和应用编程接口密钥,它正确地列出了指定日历中即将发生的事件。

链接到快速入门教程:https://developers.google.com/google-apps/calendar/quickstart/js

一旦JavaScript教程开始工作,我就尝试使用Angular2实现相同的功能,使用组件/服务,而不仅仅是索引中的脚本标记中的原始JavaScript。html文件。我大约成功了一半。

问题:我收到错误,说明“找不到名称‘gapi’”。

当我第一次点击调用代码来加载Google日历信息的页面时,我得到了这些错误,指出没有定义gapi<代码>gapi在代码中存在多个位置,特别是在分别从Google日历API验证和检索事件数据的服务中。但是,如果我离开该页面并返回,数据将无误地通过。我已尝试在索引中加载适当的脚本标记。html使用异步等,如下所示:

<script src="https://apis.google.com/js/client.js?onload=checkAuth" async></script>

我如何解决这个问题?我的代码与下面链接的存储库中的代码非常相似:

https://github.com/stefanreichert/angular2-google-calendar-example

共有2个答案

徐旻
2023-03-14

TypeScript和Javascript是不同的东西。TypeScript不能编译JS,它只知道TypeScript。因此,当您尝试使用全局JS(运行时)对象时,TypeScript对此一无所知(因为它只是编译时)。因此,您需要找到一种方法来声明全局gapi。您可以使用任意的声明。有些人会走这条路。您只需在TypeScript文件中添加以下内容

import { } from '..'

declare var gapi: any;

@Component({..})

或者更好的是,只需安装打字。这将添加全局键入,您将在Google API上获得编译时检查

npm install --save-dev @types/gapi

安装后,您可能需要重新启动IDE。我知道我有时会。

宰子琪
2023-03-14

问题是在验证完成之前试图从Google日历API检索数据。使用另一个promise,在身份验证完成后加载数据,成功地检索到我正在查找的事件数据。

另外,npm安装--save@types/gapinpm安装--save@types/gapi似乎也很有帮助。auth2声明var-gapi:any我想在服务/组件中调用gapi的任何地方。

 类似资料:
  • 我想知道我是否需要Google java客户端库才能从GAE访问我的Google日历。默认情况下,它们是Google App Engine SDK的一部分吗? 此外,我找不到一个很好的示例或教程来展示如何从Google Cloud Platform应用程序创建、读取、更新和删除Google日历事件。 非常感谢,如果您可以提供相同的代码示例或链接到适当的工作教程。

  • 在使用GoogleCalendarAPI(与python一起使用)时,我已经能够获得我想要的变量,因此我可以将事件导出到文本文件中。然而,一个变量(位置)触发了一个错误,我不知道为什么。 这直接来自google的开始代码,我还添加了我想要的变量: 它会打印一个即将到来的约会列表,包括地点,但它会停止并向我抛出这个错误 这是凭据/json的问题吗?我使用的是谷歌日历api的旧版本吗?我怎么检查?我的

  • 谷歌日历API…/auth/Calendar查看、编辑、共享和永久删除您可以使用谷歌日历访问的所有日历 谷歌日历API…/auth/Calendar。acls查看并更改您拥有的Google日历的共享权限 谷歌日历API…/auth/Calendar。事件查看和编辑所有日历上的事件 CalendarQuickstart或CalendarReader很好,它们从日历中读取,但:当我尝试写入日历时,我得

  • 是否有人有链接或可以提供Java谷歌应用程序引擎项目的代码,该项目只是与谷歌日历交互。假设从日历中获取活动。 Google Sample calendar-app engine-Sample在从HG检出后无法编译,我曾尝试搜索教程并创建自己的教程,只是运气好而已。 我已经设置了一个 API 访问项目来获取客户端机密.json。

  • 接下来,我生成了自己的OAuth2客户机ID并使用它。这种方法很简单,直到我开始收到来自Google的“匿名使用过期”错误,一段时间后我意识到这是因为密钥没有启用只读日历范围。 我的下一个想法是公开日历,并使用静态API密钥,但日历是从一个名为Peak Pro的预订服务中同步的,该服务用参加活动的客户的姓名、电子邮件和电话号码填充日历描述。我不能公开揭露那些。 接下来,我被吸引到了CalDAV A

  • 我有一个应用程序使用s2s与谷歌日历API的连接。我需要在不同的用户日历中创建事件。若要使之成为可能,用户应转到日历的设置并将其日历共享到服务帐户。但我想为用户简化这一点 - 这样他们就不需要去他们的日历设置。我没有用于用户交互的界面 - 这是一个机器人。如何以其他方式访问用户的日历?