我正在尝试列出 Google Workspace 资源日历中的所有事件,这会导致“找不到用户”或“无效模拟”,具体取决于我使用的日历标识符。相同的代码适用于普通用户,但不适用于资源日历。
$client = new Client();
$client->setApplicationName($this->getName());
$client->setAuthConfig("{$this->configLocation}/{$this->keyReceiving}"); // Service Account JSON Key
$client->setSubject($resource->getResourceEmail()); // Conference room email address
$client->setScopes($this->scopes); // [Calendar::CALENDAR, Calendar::CALENDAR_EVENTS, Directory::ADMIN_DIRECTORY_RESOURCE_CALENDAR]
$calendarService = new Calendar($client);
$events = $calendarService->events->listEvents("primary");
“普通用户”和资源的区别在于资源的域是
@resource.calendar.google.com
,用户是@domain.com
,其中域是我自己的。这会导致“找不到用户”错误。编辑:所有资源都属于与我的服务帐户密钥相同的组织,并且为生成域范围的委托。
如果我改为将主题更改为
$resource->getResourceID()
,这是一个数字 ID 而不是电子邮件地址,则会导致“无效模拟”错误。
如果我使用自己的超级管理员帐户,我可以列出任何普通用户日历,但如果我尝试通过
ID
或 Email
列出资源日历,我会收到错误“404 Not Found” - 就像日历对象一样不存在。
上述方法是否适用于列出(以及稍后更新)资源日历事件?