Google Meet Media API v2beta connectActiveConference返回500 UNKNOWN求助
Google Meet Media API v2beta ConnectActiveConference 持续返回500 UNKNOWN错误
我正在将Google Meet Media API(v2beta开发预览版)集成到Node.js语音代理中,实现程序化加入Meet会议,但调用SpacesService.ConnectActiveConference时始终返回REST 500 UNKNOWN错误,所有测试环境均可复现。
已完成的验证工作
- 通过**域范围委托(Domain-Wide Delegation)**授权了SDK要求的全部6个权限范围,通过
oauth2.googleapis.com/tokeninfo验证签发的token,确认所有权限范围存在且aud字段正确。 - 当会议无参会人员时,接口正确返回
NO_ACTIVE_CONFERENCE(HTTP 400 FAILED_PRECONDITION),证明鉴权和权限范围校验通过。 - 被模拟用户未通过浏览器/移动端加入会议(否则会触发
INCOMPATIBLE_DEVICE错误,该问题已解决)。 - SDP Offer已与官方TypeScript参考客户端对齐:3个recvonly音频收发器、4个数据通道(
session-control、media-stats、media-entries、participants)均设置为{ordered: true},BUNDLE: 0 1 2 3,Opus PT 111 + RED PT 63,包含标准头部扩展和rtcp-fb。 - 已将SDP与同一会议空间下从
chrome://webrtc-internals捕获的浏览器SDP对比,结构完全一致。
当前问题现象
直接调用REST接口(不使用SDK):
POST https://meet.googleapis.com/v2beta/spaces/<SPACE>:connectActiveConference
请求头:
Authorization: Bearer <token> Content-Type: application/json
请求体:
{ "offer": "<SDP>" }
返回结果:
HTTP 500
{"error":{"code":500,"message":"Unknown Error.","status":"UNKNOWN"}}
错误响应速度极快(约500ms),远快于ICE/DTLS握手,说明拒绝发生在SDP验证或握手前配置阶段,而非网络问题。值得注意的是,500响应的元数据中没有trace_id,但接口返回NO_ACTIVE_CONFERENCE错误时会包含该字段,导致Google支持无法关联内部日志。
最小复现代码
import { JWT } from 'google-auth-library'; const jwt = new JWT({ email: '<sa>', key: '<sa-private-key>', scopes: [ 'https://www.googleapis.com/auth/meetings.conference.media.audio.readonly', 'https://www.googleapis.com/auth/meetings.conference.media.video.readonly', 'https://www.googleapis.com/auth/meetings.conference.media.readonly', 'https://www.googleapis.com/auth/meetings.space.created', 'https://www.googleapis.com/auth/meetings.space.readonly', 'https://www.googleapis.com/auth/meetings.space.settings', ], subject: '<workspace-user>', }); await jwt.authorize(); const { token } = await jwt.getAccessToken(); const r = await fetch( `https://meet.googleapis.com/v2beta/spaces/<SPACE>:connectActiveConference`, { method: 'POST', headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ offer: '<sdp-matching-reference-client>' }) } ); console.log(r.status); // 500
已尝试的解决方案
- 使用werift v0.23(纯JS WebRTC库)——仍返回500
- 使用@roamhq/wrtc v0.10(原生libwebrtc绑定)——仍返回500
- 尝试多个Meet会议空间(多次使用
meet.new创建) - 同时使用
@google-apps/meetSDK v0.7.2和直接REST调用——REST返回的错误更清晰,SDK会误导性返回gRPCPERMISSION_DENIED(同一条件下REST返回NO_ACTIVE_CONFERENCE或500 UNKNOWN) - 更换网络环境(住宅宽带;将尝试从公网IP VPS发起请求)
- 开启/关闭Meet中的“帮我记笔记”功能
- 尝试多个Chrome浏览器和移动端Meet参会人员
问题咨询
有没有人成功集成过v2beta connectActiveConference接口?如果有,解决500错误的关键步骤是什么?除以下已完成的配置外,是否存在未公开的配置步骤:
- 项目已加入Workspace开发者预览计划
- 服务账号(SA)已通过DWD配置全部6个权限范围
- 已启用Workspace管理员的Meet Media API策略
- SDP结构与官方TypeScript参考客户端一致
- 被模拟用户未通过浏览器/移动端加入会议
或者这是v2beta开发预览版中的已知bug?
内容的提问来源于stack exchange,提问作者Reliance Fund
相关产品推荐
相关产品推荐

