Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用nodeJS将授权函数传递到另一个页面的最佳方式_Javascript_Node.js_Google Calendar Api_Google Api Nodejs Client - Fatal编程技术网

Javascript 使用nodeJS将授权函数传递到另一个页面的最佳方式

Javascript 使用nodeJS将授权函数传递到另一个页面的最佳方式,javascript,node.js,google-calendar-api,google-api-nodejs-client,Javascript,Node.js,Google Calendar Api,Google Api Nodejs Client,我正在为nodeJS使用Google日历API,并且能够使用oauth2进行身份验证。该示例工作正常,并将事件从我的日历显示到控制台。令牌和凭证JSON文件存储在与我使用的脚本相同的目录中 我的目标是在单独的事件页面上显示单个公共日历上的事件。事件页面是一个用HTML编写的公共静态页面,其中嵌入了JS。我想使用NodeJS,因为我目前正在使用它构建项目 我知道有几种方法可以做到这一点。正如预期的那样,可以随时添加和删除事件,我希望事件页面在公共用户访问静态页面时显示事件列表。我使用的代码可以在G

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

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


我知道有几种方法可以做到这一点。正如预期的那样,可以随时添加和删除事件,我希望事件页面在公共用户访问静态页面时显示事件列表。我使用的代码可以在Google API文档中找到,您在编辑中提到了两个完全不同的东西

  • 第一个链接指向Node.js API,它允许您将事件从日历下载到服务器,并与日历交互以对其进行操作
  • 第二种方法允许您在网页中嵌入日历。通过使用第二个,您不需要服务器端代码。您的客户机ID和API密钥必须在web页面中公开提供,但这很好,它们应该像这样使用
原始答案

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

  • 你的“网站”(正如我们所说的页面,但它也可能是一个API)是一个广播系统吗。因此,它对1个(或任意数量的)谷歌日历进行认证,并将其内容提供给任何获得访问权的用户
  • 或者,您的系统将从不同的日历向不同的用户提供信息
  • 从概念上讲,它们是非常不同的,因为在第一种情况下,您的服务器应该获得对
    n
    日历的访问权,并将这些密钥保存在任何用户都可以使用的变量中,因此您可以将它们保存在任何需要该数据的端点都可以使用的变量中。在第二种情况下,您需要为每个用户访问
    k
    日历,并处理这些日历之间的一致绑定

    在任何情况下,只要您没有在任何响应中意外发送
    auth令牌,就不会在同一服务器中移动
    auth令牌


    此外,我不太确定您使用的是哪些日历函数,但我认为日历API只能被点击几次,因此您不能在用户每次点击要显示这些数据的页面时简单地转发日历API请求,而是;对Calendar API进行身份验证,下载日历数据并在本地保存,使用此数据生成页面,然后在一段时间后刷新日历的本地副本(如果您的系统符合第1点/的要求,这将起作用,但即使对于类型2的系统,也可以改进以使其工作).

    请提供有关此解决方案应工作的所需行为和环境的进一步信息。作为第一个提示,我建议围绕API构建一个包装器类,以对每个用户进行身份验证basis@Newbie我只需要一个来自谷歌公共日历的未来事件的简单列表。之所以设置NodeJS环境,是因为我希望它与express一起处理我的请求。我觉得将功能与显示的信息分开比较理想。我真的只是在寻找一种最好的方法来处理从函数中导出结果,而不需要过多地传递auth变量。再说一次,如果这不能回答问题,请原谅我;对于服务器端编码来说仍然是非常新的。这取决于“导出”或“传递”auth变量的含义(以及“页面”的含义),但最终对googleapis来说重要的是,您最终会在每个API请求上传递此类auth。重复一下Newbie所说的,解决这个问题的一种方法是在服务器端有一个类来维护所需的相关
    auth
    对象的状态,然后让该类用适当的auth执行API调用。谢谢你们的回复@克罗戈,这就是你指的吗?授权和函数位于一个js文件中,该文件位于api的目录中。信息需要显示在单独的事件页面上(带有嵌入式JS的HTML)。我想我应该分配函数在事件页面的页面加载上运行,然后将响应传递到事件页面?不,您提供的链接谈到了类继承(在JS中要做一些更复杂的事情,所以我会避免)。请编辑您的问题并解释您的预期用途,以及您的体系结构将是什么样子。我主要感兴趣的是您的用户将如何访问这些数据(例如,身份验证或公开),以及您如何根据日历API进行身份验证(所需的身份验证介质来自何处)。我已更新了问题以回答这些问题。如果需要进一步澄清,请告诉我。再次感谢你的耐心。你在编辑中提到了两件完全不同的事情。第一个链接指向Node.js API,它允许您将事件从日历下载到服务器。第二种方法允许您在网页中嵌入日历。通过使用第二个,您不需要服务器端代码。您的客户端ID和API密钥必须在web页面中公开提供,但这很好,它们应该像这样使用。这更有意义。所以,我不应该使用NodeJS来处理对GoogleCalAPI的调用以获取事件。NodeJS最好与日历API一起使用,以存储/操作/保存更改的数据。需要更多帮助吗?谢谢。我很好。我对更好地学习API调用更有信心。