创建新GCal事件时无法生成Google Meet会议的问题排查
RequestId 不唯一/不固定
Google要求createRequest中的requestId必须是与事件绑定的唯一固定值,不能每次请求都随机生成(比如你用的Str::random(10))。如果重复请求时requestId变化,Google会判定为新的会议创建请求,但事件已存在,导致会议状态卡在pending。解决方法:改用自有系统中该事件的唯一ID(比如事件UUID)作为requestId,确保每次针对同一事件的请求都用相同的requestId。未正确传递
conferenceDataVersion参数
确认在调用events->insert方法时,是否将conferenceDataVersion作为可选参数传入,而不是仅设置在事件对象中。正确的调用方式应该是:$service->events->insert($calendarId, $GoogleServiceCalendarEvent, [ 'conferenceDataVersion' => 1 ]);如果这个参数传递错误或遗漏,即使事件对象中包含conferenceData,Google也不会处理会议创建请求。
权限范围不足
检查OAuth2授权的scope是否包含足够的权限:必须包含https://www.googleapis.com/auth/calendar.events或更高权限的https://www.googleapis.com/auth/calendar。如果仅使用了只读或受限scope,可能无法生成Google Meet链接,导致会议状态pending。事件属性不符合Meet生成条件
- 如果事件是过去的时间,Google不会为其生成Meet会议,状态会保持pending。确保事件的开始时间在当前时间之后。
- 重复事件的会议创建逻辑可能存在特殊处理,建议先测试单次事件是否能正常生成Meet链接。
客户端库版本过旧
你使用的Google Client for PHP库如果版本过旧,可能存在ConferenceData处理的兼容性问题。尝试更新到最新版本的google/apiclient包,再测试是否能正常生成Meet会议。
内容的提问来源于stack exchange,提问作者Full Stack Alien

