温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - Best way to pass an authorization function to another page with nodeJS
google-calendar-api javascript node.js google-api-nodejs-client

javascript - 使用nodeJS将授权功能传递到另一个页面的最佳方法

发布于 2020-04-22 15:47:04

我正在使用用于nodeJS的Google Calendar API,并且能够使用oauth2进行身份验证。该示例正常工作,并从我的日历向控制台显示事件。令牌和凭证JSON文件与我使用的脚本存储在同一目录中。

我的目标是在单独的事件页面上显示单个公共日历上的事件。事件页面是用HTML编写的公共静态页面,并在其中嵌入了JS。我想使用NodeJS,因为我目前正在用它来构建项目。

我知道有几种方法可以做到这一点。正如预期的那样,可以随时添加和删除事件,我希望事件页面在公共用户访问静态页面时显示事件列表。我正在使用的代码可以在此处的Google API文档中找到

查看更多

提问者
Brian
被浏览
14
Newbie 2020-02-07 05:01

您在编辑中提到了两个完全不同的事情。

  • 第一个链接引用Node.js API,该API允许您将事件从Calendar下载到SERVER并与Calendar进行交互以对其进行操作。
  • 第二个使您可以将日历嵌入网页中。通过使用第二个代码,您不需要服务器端代码。您的CLIENT_ID和API_KEY必须在网页上公开提供,但这很好,它们应按以下方式使用。

原始答案

这里我们讨论的是代码体系结构,因此不能提供许多简单的代码片段作为解决方案。首先,您需要从概念的角度弄清楚系统将要做什么:

  1. 是您的“网站”(正如我们在谈论页面一样,但它也可能是API)是广播系统。因此,它对1个(或任意数量)的Google日历进行身份验证,并将其内容提供给任何有权访问它的用户
  2. 或您的系统将向不同的用户提供来自不同日历的信息

从概念上讲,它们是非常不同的,因为在第一种情况下,您的服务器应有权访问n日历并持有对任何用户可用的密钥,因此您可以将它们保留在可供需要该数据的任何端点使用的变量中。在第二个步骤中,您需要k为每个用户访问日历并处理它们之间的一致绑定。

在任何情况下auth token,只要您没有在任何响应中意外发送,都不必担心在同一服务器内四处移动

此外,我不太确定您使用的是哪个Calendar函数,但是我认为Calendar API仅会被击中几次,因此您不能简单地在用户每次点击该数据的页面时转发Calendar API请求将要显示,而是;对Calendar API进行身份验证,下载日历数据并将其保存在本地,使用该数据生成您的页面,然后在一段时间后刷新日历的本地副本(如果您的系统按照第1点/可以使用,则可以甚至可以用于类型2的系统。