【问题标题】:Google Calendar API Issue with JavascriptJavascript 的 Google 日历 API 问题
【发布时间】: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 前端应用程序的日历中获取所有事件,而某些用户可能没有帐户。
  • 如果有人有想法那就太好了!

标签: javascript node.js google-oauth google-calendar-api require


【解决方案1】:

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

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

https://stackoverflow.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。
  • 是的,但这仅适用于登录过程,不适用于服务帐户令牌。我如何将这两者结合起来?当我只是复制它并尝试运行时,它甚至都不起作用。处理不清楚的文档真的很令人沮丧。
  • 这个答案之后你的脚本如何?你能用你现在的脚本更新问题吗?
猜你喜欢
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
相关资源
最近更新 更多