使用JavaScript创建Teamup日历事件时遭遇权限错误
用JavaScript调用Teamup日历API创建事件时遇到权限错误
请求详情
{ method: 'POST', contentType: 'application/json', headers: { Accept: 'application/json', 'Teamup-Token': <api_token>, Authorization: 'Bearer <auth_code>' }, payload: '{"subcalendar_ids":[0],"start_dt":"2024-08-24T14:15:22Z","end_dt":"2024-08-24T14:15:22Z","all_day":false,"tz":"Europe/London","remote_id":"string","title":"Test Title","notes":"Test Desc\n","location":"Home, EX6 6LQ","who":"Test Organiser","signup_enabled":false,"comments_enabled":false}', muteHttpExceptions: true }
请求地址
https://api.teamup.com/<mycalendarurl>/events
错误响应
{"error":{"id":"no_permission","title":"No permission","message":"You do not have the required permissions to do this. This may be due to a change in permissions of your link since you loaded the calendar. Please refresh the calendar."}}
已做排查
- 提前获取了
<auth_code>认证令牌,未修改过权限配置 - 尝试过退出浏览器并刷新日历网页,但不清楚提示中“刷新日历”的具体操作
- 使用的
<mycalendarurl>是Teamup控制台共享板块生成的、带修改权限的API专用链接 <api_token>来自Teamup官网API密钥申请页面- 发现日期带
toISOString()生成的毫秒部分会触发格式错误,说明请求逻辑基本通顺,核心问题为权限错误 - 未找到
subcalendar_ids参数文档,暂用示例值0
解决建议
简化认证头:Teamup API不需要同时使用
Teamup-Token和Authorization: Bearer两种认证方式,二者选其一即可。同时传入可能导致权限校验冲突:- 若用API密钥(
Teamup-Token),确认密钥拥有事件创建权限,且<mycalendarurl>对应的日历允许该密钥访问 - 若用OAuth令牌(
Authorization: Bearer),检查令牌权限范围包含事件创建,且未过期
- 若用API密钥(
修正subcalendar_ids值:
0不是有效的子日历ID,调用GET /<mycalendarurl>/subcalendars接口获取实际子日历ID列表,替换为存在且有写入权限的ID,错误的子ID也可能触发权限类报错正确执行“刷新日历”:在Teamup网页端打开目标日历,点击顶部刷新按钮或重新加载页面,确保会话权限同步;若用API密钥,可尝试重新生成新密钥替换测试
再次确认链接权限:检查
<mycalendarurl>对应的共享链接,确保勾选了“允许添加/修改/删除事件”,且链接未被禁用或修改过权限
内容的提问来源于stack exchange,提问作者wheeliebin
相关产品推荐
相关产品推荐

