ASP.NET 中的 Google 日历 (v3) 集成:创建/编辑/删除事件






4.92/5 (17投票s)
如何以编程方式创建/编辑/删除 Gmail 用户的 Google 日历 (v3) 中的事件。
引言
本文介绍了如何以编程方式创建/编辑/删除 Gmail 用户的 Google 日历 (v3) 中的事件。开发者需要在 Google API 控制台 上创建一个项目,并使用凭据(ClientID、ClientSecret 和 Redirect URL)来同步项目中注册的任何 Gmail 用户的事件。
Using the Code
我的目的是让用户能够通过代码来理解,以便他们能够将 Web 应用程序(事件管理系统、预订系统等)的事件与用户的 Google 日历同步。
IDE
- Visual Studio (我使用的是 2013)
文件说明
首先,我将简要介绍此项目中使用的文件。
- App_Code
- GoogleCalendarAppointmentModel.cs - 此文件用于保存需要发送到 Google 日历的内容
- GoogleCalendarManager.cs - 此文件包含所有与 Google 日历交互的函数,即读/写事件、访问日历等。
- GoogleTokenModel.cs - 此文件内容用于获取 Google 日历 API 的响应,即 AccessToken(用于身份验证,将在一定时间后过期),RefreshToken(不会过期,用于获取新的 AccessToken)。
- App_Data
- XMLFile.xml - 此文件在此项目中充当数据库。为简化起见,此项目仅处理单个用户和单个事件,即:
- 您将用户注册到 Google API 项目,以便可以以编程方式访问其 Google 日历
- 您通过 Visual Studio 项目创建/编辑/删除事件,并在 Google 日历 上查看更改
- 您可以更改您的登录凭据。目前它们设置为 UserName=Waqas, Pwd = 111
- 当您注册 Google 日历时,您将获得新的 AccessToken 和 RefreshToken,它们将保存在此处
- 当您 **创建/更新** 事件时,其详细信息将保存在此处。
- 当您 **删除** 事件时,这些详细信息将被移除,正如您在下面看到的,事件属性没有值
- 当您撤销权限时,您的 AccessToken 和 RefreshToken 将从此处移除
- 您 **无需** 手动编辑此文件,除了用户名和密码,因为这可能会导致异常。
- XMLFile.xml - 此文件在此项目中充当数据库。为简化起见,此项目仅处理单个用户和单个事件,即:
- Default.aspx - 主页面,您可以在其中从 Google 日历注册、撤销、创建/编辑/删除事件
在 Google API 控制台创建项目
- 前往 https://console.developers.google.com 并创建一个新项目
- 在 **API & Auth** 下点击 **API**,然后在下面点击日历 API
- 点击 **启用 API**
- 在 **API & Auth** 下点击 **凭据**
- 点击 **添加凭据**,然后点击 **oAuth 2.0 clientID**
- 选择 **配置同意屏幕**
- 提供 **产品名称**、logo(可选)和主页 URL(可选)。然后点击保存。
- 选择 Web 应用程序作为 **应用程序类型**,并提供您的项目 URL(例如:https://:58392/GoogleCalandarDemo/Default.aspx这是 Google 发送令牌和其他凭据以访问 Google 日历的页面),然后点击创建
- 在 **OAuth 2.0 client ID** 下点击您的项目名称(**web client 1** 是默认名称)
- 点击 **下载 JSON** 并保存文件(我在 **App_Data** 中添加了 **MyGoogleStorage** 文件夹并将此文件放在其中。它包含项目的凭据)。
- **MyGoogleStorage** 文件夹将用于创建包含 Access token 凭据的临时文件和永久文件
- 重定向到 Google 日历时将创建一个临时文件
- 成功注册后将创建新文件 **Google.Apis.Auth.OAuth2.Responses.TokenResponse-m**
如果文本中有任何不清楚的地方,请查看下面的图片。
在运行代码之前,请确保:
- 更改 default.aspx.cs 中的 UserID 和 calID 的值
- 您已从 https://console.developers.google.com 下载了 JSON **client_secrets** 并将其包含在 **MyGoogleStorage** 文件夹中
- 您已通过在包管理器控制台中编写 Install-Package Google.Apis.Calendar.v3 来添加日历 v3
逐步执行代码(您需要遵循顺序,因为此代码已从日历 v2 迁移到 v3)
- 首次运行代码时,您会看到登录屏幕,您可以在其中输入 Waqas 和 111 通过(这些值来自 XML 文件,您可以更改或删除此部分。这只是为了模仿普通网站需要登录的行为)
- 登录后,您需要再次输入地址(在本例中为 https://:26033/default.aspx)才能进入注册屏幕(仍然存在一个小 bug)。
- 点击“注册 Google 日历”按钮并允许管理日历的权限
- 您已成功将应用程序注册到您的 Google 日历,但现在您需要转到创建事件屏幕。您需要再次单击该按钮才能执行此操作
- 在创建事件屏幕上输入值,然后点击 **创建/更新事件**
- 您将看到 **事件已成功创建** 消息。您需要点击 Google 日历按钮才能在您的 Google 日历上查看事件
您需要首次注册遵循上述顺序。下次登录后,您将被重定向到创建/更新事件屏幕,一切将顺利进行。
重新开始
如果您想从头开始检查代码(当用户未注册时),您需要从 https://security.google.com/settings/security/permissions 撤销权限,并从 **MyGoogleStorage** 文件夹中删除新创建的文件(Google.Apis.Auth.OAuth2.Responses.TokenResponse-)
XML 文件仅用于模拟数据库的行为。您需要关注如何向 Google 日历注册客户端,以及之后如何将事件上传到已注册客户端的日历。
希望就这些了。我将修改代码并消除一些小问题(为此您需要遵循顺序)。