Javascript 的 Google 日历 API 问题

Posted

技术标签:

【中文标题】Javascript 的 Google 日历 API 问题【英文标题】:Google Calendar API Issue with Javascript 【发布时间】:2022-01-18 20:44:59 【问题描述】:

我正在尝试使用 google Calendar API 从 G-Calendar 获取所有事件。以下代码适用于 Node.js

const google = require('googleapis');

const auth = new google.auth.JWT(
    CREDENTIALS.client_email,
    null,
    CREDENTIALS.private_key,
    SCOPES
);

const getEvents = async (dateTimeStart, dateTimeEnd) => 

    try 
        let response = await calendar.events.list(
            auth: auth,
            calendarId: calendarId,
            timeMin: dateTimeStart,
            timeMax: dateTimeEnd,
            timeZone: 'Asia/Kolkata'
        );
    
        let items = response['data']['items'];
        return items;
     catch (error) 
        console.log(`Error at getEvents --> $error`);
        return 0;
    
;

但是因为我不能在普通浏览器 javascript 中使用“require”,所以它不起作用。 包括我 <script src="https://apis.google.com/js/api.js"></script>const google = gapi; 而不是 const google = require('googleapis');

这本身有效,但无法识别 const auth = new google.auth.JWT() 不再作为函数并抛出 Uncaught TypeError: google.auth is undefined

如果有人可以提供帮助,我真的很乐意。提前谢谢大家!

【问题讨论】:

有人有提示吗? 节点是服务端JS的,你有没有试过按照Javascript Quickstart来实现? @Kessy 我知道快速入门指南。问题是,这只是用户身份验证,我需要使用服务帐户进行身份验证,因为我只想从自定义日历 javascript 前端应用程序的日历中获取所有事件,而某些用户可能没有帐户。 如果有人有想法那就太好了! 【参考方案1】:

如果您需要“普通浏览器 javascript”的客户端实现,则不能使用 node.js implementation

相反,您需要创建一个流程来获取 Google 服务帐户访问令牌。有一个很好的示例说明如何使用 XHR 实现它:

https://***.com/a/29288013/11599789

【讨论】:

非常感谢您的回答。我得到了很多,到目前为止,我可以从身份验证服务中获取访问令牌,但是 我仍然难以访问我的日历。 在 node.js 中,我只会使用 const calendar = google.calendar(version : "v3");然后是calendar.events.list(...),但这一切都不适用于纯浏览器javascript。它无法识别第一部分,当我尝试gapi.calendar.events 时,它会抛出TypeError: gapi.calendar is undefined我是否忘记导入某些内容?我使用了https://apis.google.com/js/api.js 日历 API 的浏览器 Javascript 实现非常不同。您需要以quickstart 为基础来定义gapi。 是的,但这仅适用于登录过程,不适用于服务帐户令牌。我如何将这两者结合起来?当我只是复制它并尝试运行时,它甚至都不起作用。处理不清楚的文档真的很令人沮丧。 这个答案之后你的脚本如何?你能用你现在的脚本更新问题吗?

以上是关于Javascript 的 Google 日历 API 问题的主要内容,如果未能解决你的问题,请参考以下文章

javascript [userscript] [tabelog]通过发送链接将当前商店添加到Google日历(需​​要修复开始/结束日期)

php 使用一个用于JavaScript地图显示的Google Maps API密钥(活动日历)和用于场地地理位置查找的不同API密钥(事件

如何通过 Javascript 中的 Google Calendar API 获取 Google Calendar 中事件的位置?

需要好的例子:Javascript 中的 Google Calendar API

使用 Google 协作平台中的 Google Calendar API

“记住牛奶”订阅日历的 Google 日历同步问题