我使用 PHP 发出 POST 请求来结束 google meet 会议。这一直有效直到几天,但突然开始失败。
function endGoogleMeet($meetingId){
$accessToken = getAccessToken();
try {
$getConferenceRecordUrl = 'https://meet.googleapis.com/v2/conferenceRecords?filter=space.meeting_code='.$meetingId;
$conferences = curl_GET($getConferenceRecordUrl,$accessToken);
$spaceName = '';
if(!empty($conferences)){
$confDetails = $conferences['conferenceRecords'][0];
$spaceName = $confDetails['space'];
echo 'Found conference space with name: ' .$spaceName.' for meeting id '.$meetingId.PHP_EOL;
}else{
throw new Exception('Could not find meeting details');
}
if(!empty($spaceName)){
$endConfUrl = 'https://meet.googleapis.com/v2/'.$spaceName.':endActiveConference';
$response = curl_POST($endConfUrl, $accessToken);
echo 'Ended active conference'.PHP_EOL;
}
} catch (Exception $e) {
echo $e->getMessage();
}
}
这里的回应是-
{"error":{"code":403,"message":"Permission denied on resource MeetingSpace (or it might not exist)","status":"PERMISSION_DENIED"}}
我想知道是否为结束会议引入了新的范围。我用来获取访问令牌的范围是 -
$scopes = ['https://www.googleapis.com/auth/meetings.space.readonly', 'https://www.googleapis.com/auth/meetings.space.created'];
这里的任何指示都会有帮助。
上面提到过。希望这能正常工作并结束会议。
我也遇到了这个问题,
endActiveConference
通过冒充会议主持人工作得很好,突然间我开始收到 403 错误。以前,我可以手动创建与用户的会议,然后模拟该用户并使用我的应用程序结束会议,但现在不行了。
我发现的解决方案是,会议空间also需要由尝试结束会议的同一个应用程序创建,并且应该使用spaces.create创建。如果您使用应用程序创建自己的会议空间,您将能够结束他们的会议。这意味着您需要某种
spaces
工厂为您的用户提供链接,您无法结束他们创建的会议。
为什么会这样?也许这是有意的,根据 scope
https://www.googleapis.com/auth/meetings.space.created
的描述:
它明确表示您只能创建、编辑和查看有关应用程序创建的会议的信息。据推测,存在某种隐藏属性来确定哪个应用程序创建了每个空间。在 https://meet.google.com 上创建会议正在使用 Google 的应用程序,因此您的应用程序无法对其进行操作。
那么为什么它之前可以工作呢?我的猜测是,这是一个已修复的疏忽。我记得当我第一次测试 API 时,看到描述中的“由应用程序创建”部分,并认为我必须创建自己的空间,但当我只需要模拟主机时,我松了一口气。很难确定,因为就像 Betty St 的评论一样,我在 Google 问题跟踪器下创建的任何问题都会立即被删除,所以我无法得到官方答案。
Meet API 仍然很新,所以我认为他们仍在修复漏洞是有道理的,也许他们将来会添加新的范围,甚至恢复此更改,但现在您可以尝试更改工作流程来创建自己的工作流程会议链接作为解决方法。