调用Google Calendar API获事件列表遇400错误:缺少结束时间求方案
嘿,这个错误我之前帮人排查过,虽然你是要获取事件列表,但这个提示其实大概率是请求的方式或者参数出了问题,给你几个排查方向:
先确认请求的核心信息有没有搞错:获取事件列表必须用
GET方法,对应的接口是https://www.googleapis.com/calendar/v3/calendars/{你的日历ID}/events。要是你不小心用了POST方法(这是创建事件用的),那API自然会要求你提供结束时间,毕竟创建事件必须有起止时间嘛。先核对下Method和Endpoint是不是正确的。检查请求Body是否画蛇添足:GET请求获取列表根本不需要传Body!如果你在请求里附带了Body(比如不小心粘了创建事件的JSON结构),API可能会误判成你要创建事件,直接抛出“缺少结束时间”的错误。赶紧把Body清空试试。
时间范围参数的传递要规范:如果你想筛选某个时间段的事件,
timeMin(起始时间)和timeMax(结束时间)得放在URL的查询参数里,比如?timeMin=2024-05-01T00:00:00Z&timeMax=2024-05-31T23:59:59Z,而且格式必须是RFC3339的UTC时间。要是你只传了timeMin没传timeMax,或者格式不对,也可能触发这个奇怪的错误提示。核对Headers是否正确:确保Headers里的
Authorization是Bearer {你的访问令牌},而且GET请求不需要设置Content-Type(除非你硬要传Body,但那本身就是错的)。如果是POST请求才需要Content-Type: application/json,但获取列表真的用不上POST。
给你个正确的请求示例参考:
请求方法:GET
请求URL:https://www.googleapis.com/calendar/v3/calendars/primary/events?timeMin=2024-05-01T00:00:00Z&timeMax=2024-05-31T23:59:59Z
Headers:Authorization: Bearer ya29.a0AfH6SM...
按照这几个方向排查,应该能解决问题~
内容的提问来源于stack exchange,提问作者GeorgeA

