超级管理员服务帐号找不到资源日历

问题描述 投票:0回答:0

我正在尝试列出 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” - 就像日历对象一样不存在。

上述方法是否适用于列出(以及稍后更新)资源日历事件?

php google-calendar-api google-api-php-client google-directory-api
© www.soinside.com 2019 - 2024. All rights reserved.