You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Calendar JS快速入门如何无需用户OAuth实现预约事件写入

实现无需用户OAuth授权的谷歌日历预约方案

你当前使用的前端JS quickstart方案是面向「用户授权操作自己的谷歌日历资源」的场景,天然要求用户登录授权,不符合你要操作你自己的日历、仅让用户选择时段提交预约的需求,正确实现逻辑如下:


核心实现思路

所有涉及你日历权限的操作全部放在后端完成,前端仅负责展示可预约时段、收集用户提交的预约信息,完全不接触你的日历权限凭证,也不需要用户做谷歌OAuth授权。


具体操作步骤

  • 第一步:创建谷歌服务账号
    1. 登录谷歌云控制台,创建一个服务账号,下载对应的JSON密钥文件,这个密钥文件只能存在服务端,绝对不能泄露到前端
    2. 打开你要用于预约的谷歌日历,进入「设置和共享」-「与特定人员共享」,添加服务账号的邮箱地址,授予「对事件进行更改」的权限
  • 第二步:开发后端接口,封装日历操作逻辑
    后端需要实现两个核心接口,你可以用任意后端语言实现,谷歌官方提供了多语言的SDK,以下是Node.js环境的示例代码:
    1. 拉取日历忙闲时段接口:后端调用谷歌日历API拉取你的日历已占用时段,计算出可预约时段返回给前端,用于渲染预约按钮
    2. 提交预约接口:接收前端传的选中时段、用户邮箱,调用谷歌日历API创建事件,把用户邮箱添加到attendees参数中,谷歌会自动给用户发送邀请邮件,用户接受后就会同步到自己的日历
    const {google} = require('googleapis');
    const calendar = google.calendar('v3');
    
    // 初始化服务账号授权
    const auth = new google.auth.GoogleAuth({
      keyFile: '你的服务账号密钥文件路径.json',
      scopes: ['https://www.googleapis.com/auth/calendar'],
    });
    
    // 创建预约事件逻辑示例
    async function createBooking(startTime, endTime, userEmail) {
      const authClient = await auth.getClient();
      const event = {
        summary: '预配置的预约标题',
        description: '预配置的预约详情说明',
        start: {
          dateTime: startTime,
          timeZone: 'Asia/Shanghai' // 替换为你所在的时区
        },
        end: {
          dateTime: endTime,
          timeZone: 'Asia/Shanghai'
        },
        attendees: [{email: userEmail}],
      };
      return calendar.events.insert({
        auth: authClient,
        calendarId: '你的谷歌日历ID,通常是你的谷歌邮箱地址',
        resource: event,
        sendUpdates: 'all' // 自动给所有参会人发送通知邮件
      });
    }
    
  • 第三步:前端改造
    删除原有的gapi授权相关代码,前端仅需要调用你自己的后端接口:
    1. 页面加载时调用后端拉取可预约时段接口,渲染对应的预约按钮
    2. 用户点击按钮、填写邮箱提交时,调用后端预约接口即可完成整个流程

注意事项

  • 后端接口要添加限流、时段冲突校验逻辑,避免恶意请求、同一时段重复预约的问题
  • 如果不需要用户手动确认邀请,可以在你自己的谷歌日历设置中开启「自动添加受邀事件」,用户侧也可以自行设置自动同步受邀事件

内容的提问来源于stack exchange,提问作者mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:30:00