Google Calendar API只读权限配置异常:n8n可增删日历事件
我在Google Cloud Console中创建了一个仅授予Google Calendar只读权限的项目,配置的权限范围如下:
非敏感权限范围
.../auth/calendar.calendarlist.readonly- 查看您订阅的Google日历列表.../auth/calendar.settings.readonly- 查看您的日历设置敏感权限范围
.../auth/calendar.events.readonly- 查看您所有日历上的事件.../auth/calendar.readonly- 查看并下载您可访问的任意Google日历内容.../auth/calendar.calendars.readonly- 查看您有权访问的Google日历的标题、描述、默认时区及其他属性.../auth/calendar.events.owned.readonly- 查看您拥有的Google日历上的事件
但将应用(n8n)连接到该项目后,它获得了超出预期的更高权限(权限显示应用拥有日历的创建、编辑、删除等权限)。我通过自动化流程确认:n8n能够在我的任意日历上创建和删除事件。
请问我的配置哪里出现了问题?感谢您的帮助!
1. 检查n8n连接的权限范围配置
n8n的Google Calendar节点默认可能请求读写权限,不受GCP项目配置直接约束:
- 打开n8n,进入Connections页面找到对应Google Calendar连接
- 查看权限范围(Scopes)字段,确认是否包含
.../auth/calendar或.../auth/calendar.events这类读写权限 - 若存在,删除读写权限,替换为你在GCP中配置的只读scope列表,保存后重新完成授权流程
2. 验证GCP OAuth同意屏幕的权限范围
GCP项目的OAuth同意屏幕中可能残留旧的读写权限:
- 进入Google Cloud Console → 目标项目 → APIs & Services → OAuth consent screen
- 切换到Scopes标签,检查是否存在读写类Calendar权限(如
https://www.googleapis.com/auth/calendar) - 删除多余的读写权限,仅保留所需的只读scope,保存后重新在n8n中授权
3. 撤销旧授权令牌并重新授权
已颁发的令牌会保留首次授权时的权限,修改scope后需重置:
- 在n8n中删除当前Google Calendar连接,重新创建
- 打开Google账号安全设置 → 第三方应用访问权限,找到n8n应用并撤销访问权限
- 重新在n8n中完成授权流程
4. 排查Google Workspace全域委派权限(若使用Workspace账号)
如果是Google Workspace用户,管理员可能配置了全域委派权限覆盖项目设置:
- 联系Workspace管理员,进入Admin Console → Security → API controls → Domain wide delegation
- 找到对应应用的客户端ID,检查其关联的权限范围
- 移除读写类Calendar权限,仅保留只读scope
内容的提问来源于stack exchange,提问作者Plouff

