如何通过API实现订阅他人Google Calendar日历的操作流程
用Google Calendar API订阅他人日历的实现方法
你描述的「打开Google Calendar→设置→添加日历→订阅日历→输入对方邮箱」的UI操作,完全可以通过编程实现,官方文档中对应的接口是 CalendarList: insert,你之前没找到是因为Google没有把这个接口单独归类到「订阅」相关的入口,而是放在了个人日历列表的管理接口分类下。
核心实现逻辑
UI里的订阅操作本质是把目标日历的资源ID添加到你自己的日历列表中,两种场景的处理逻辑和UI完全一致:
- 如果目标日历是公开状态,调用接口后会直接完成订阅,日历会立即出现在你的日历列表中
- 如果目标日历是非公开状态,调用接口后会自动向对方发送访问申请,对方同意后你即可正常查看日历内容
调用前提
- 首先需要在Google Cloud控制台启用Google Calendar API,配置OAuth2授权凭证
- 请求的授权范围至少需要
https://www.googleapis.com/auth/calendar(修改日历的权限)
调用示例
通用HTTP请求示例
POST https://www.googleapis.com/calendar/v3/users/me/calendarList Content-Type: application/json Authorization: Bearer {你的OAuth2访问令牌} { "id": "要订阅的日历ID/对方Google账号邮箱" }
Python官方客户端示例
from googleapiclient.discovery import build from google.oauth2.credentials import Credentials # 替换为你自己的授权凭证初始化逻辑 creds = Credentials.from_authorized_user_file('token.json', ['https://www.googleapis.com/auth/calendar']) service = build('calendar', 'v3', credentials=creds) # 执行订阅操作 calendar_list_entry = { 'id': 'target-user@gmail.com' # 替换为要订阅的日历ID,默认日历直接填对方邮箱即可 } created_entry = service.calendarList().insert(body=calendar_list_entry).execute() print(f"订阅完成,日历名称:{created_entry['summary']}")
注意事项
- 如果要订阅的不是对方的默认主日历,需要提前拿到对应日历的具体ID才能完成订阅,不能直接使用对方的账号邮箱
- 调用接口后如果返回404错误,说明你输入的日历ID不存在,或者对方没有将该日历设置为可被搜索/申请访问
内容的提问来源于stack exchange,提问作者vir us
相关产品推荐
相关产品推荐

