使用 nodeJS 将授权功能传递到另一个页面的最佳方法
Best way to pass an authorization function to another page with nodeJS
我正在为 nodeJS 使用 Google Calendar API,并且能够使用 oauth2 进行身份验证。该示例工作正常,并将我的日历中的事件显示到控制台。令牌和凭据 JSON 文件存储在与我正在使用的脚本相同的目录中。
我的目标是在单独的活动页面上显示单个 public 日历上的那些活动。事件页面是一个 public,用 HTML 编写的静态页面,其中嵌入了 JS。我想使用 NodeJS,因为我目前正在用它构建项目。
我知道有几种方法可以做到这一点。正如预期的那样,可以随时添加和删除事件,我希望事件页面在 public 用户访问静态页面时显示事件列表。我正在使用的代码可以在 Google API 文档 here
中找到
您在编辑中提到了两个完全不同的事情。
- 第一个 link 指的是 Node.js API,它允许您将事件从日历下载到服务器并与日历交互以对其进行操作。
- 第二个允许您在网页中嵌入日历。通过使用第二个,您不需要服务器端代码。您的 CLIENT_ID 和您的 API_KEY 必须在网页中公开提供,但这没关系,它们本来就是这样使用的。
原始答案
这里我们讨论的是代码架构,所以不能提供很多简单的代码片段作为解决方案。首先你需要从概念的角度弄清楚你的系统要做什么:
- 您的'website'(我们谈论的是页面,但它也可能是API)是一个广播系统。因此,它对 1 个(或任意数量)Google 个日历进行身份验证,并将其内容提供给任何有权访问它的用户
- 或者您的系统将向不同的用户提供来自不同日历的信息
从概念上讲,它们非常不同,因为在第一种情况下,您的服务器应该获得对 n
日历的访问权限,并将这些密钥保留给任何用户,因此您可以将它们保存在任何端点都可用的变量中需要那个数据。在第二个中,您需要为每个用户获得对 k
日历的访问权限,并处理这些日历之间的一致绑定。
在任何情况下,在同一服务器内移动 auth token
都不是什么大问题,只要您没有在任何响应中不小心发送它即可。
此外,我不太确定您使用的是哪些日历功能,但我认为日历 API 只能被点击几次,因此您不能简单地转发日历 API 每次用户点击将要显示此数据的页面时请求,而是;验证日历 API,下载日历数据并将其保存在本地,使用此数据生成您的页面,然后在一段时间后刷新日历的本地副本(如果您的系统符合第 1 点,这将有效/ 但可以改进以适用于类型 2 的系统)。
我正在为 nodeJS 使用 Google Calendar API,并且能够使用 oauth2 进行身份验证。该示例工作正常,并将我的日历中的事件显示到控制台。令牌和凭据 JSON 文件存储在与我正在使用的脚本相同的目录中。
我的目标是在单独的活动页面上显示单个 public 日历上的那些活动。事件页面是一个 public,用 HTML 编写的静态页面,其中嵌入了 JS。我想使用 NodeJS,因为我目前正在用它构建项目。
我知道有几种方法可以做到这一点。正如预期的那样,可以随时添加和删除事件,我希望事件页面在 public 用户访问静态页面时显示事件列表。我正在使用的代码可以在 Google API 文档 here
中找到您在编辑中提到了两个完全不同的事情。
- 第一个 link 指的是 Node.js API,它允许您将事件从日历下载到服务器并与日历交互以对其进行操作。
- 第二个允许您在网页中嵌入日历。通过使用第二个,您不需要服务器端代码。您的 CLIENT_ID 和您的 API_KEY 必须在网页中公开提供,但这没关系,它们本来就是这样使用的。
原始答案
这里我们讨论的是代码架构,所以不能提供很多简单的代码片段作为解决方案。首先你需要从概念的角度弄清楚你的系统要做什么:
- 您的'website'(我们谈论的是页面,但它也可能是API)是一个广播系统。因此,它对 1 个(或任意数量)Google 个日历进行身份验证,并将其内容提供给任何有权访问它的用户
- 或者您的系统将向不同的用户提供来自不同日历的信息
从概念上讲,它们非常不同,因为在第一种情况下,您的服务器应该获得对 n
日历的访问权限,并将这些密钥保留给任何用户,因此您可以将它们保存在任何端点都可用的变量中需要那个数据。在第二个中,您需要为每个用户获得对 k
日历的访问权限,并处理这些日历之间的一致绑定。
在任何情况下,在同一服务器内移动 auth token
都不是什么大问题,只要您没有在任何响应中不小心发送它即可。
此外,我不太确定您使用的是哪些日历功能,但我认为日历 API 只能被点击几次,因此您不能简单地转发日历 API 每次用户点击将要显示此数据的页面时请求,而是;验证日历 API,下载日历数据并将其保存在本地,使用此数据生成您的页面,然后在一段时间后刷新日历的本地副本(如果您的系统符合第 1 点,这将有效/ 但可以改进以适用于类型 2 的系统)。