You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法添加参会者创建Google Calendar事件,G Suite全域授权无法启用

解决Google Calendar服务账号添加参会者时的403 forbiddenForServiceAccounts错误

错误原因

服务账号本身没有权限直接向参会者发送日历邀请,必须启用域范围委派(Domain-Wide Delegation of Authority),并以G Suite域内的用户身份进行操作,才能绕过这个限制。

正确配置G Suite域范围委派

确保你按照以下步骤完成配置(配置生效可能需要15-30分钟):

  • 登录G Suite管理员后台,进入「安全」>「API控制」>「域范围委派」
  • 点击「添加新的客户端ID」,填入你的服务账号客户端ID(可从credentials.json的client_id字段获取)
  • 添加OAuth2权限范围:https://www.googleapis.com/auth/calendar
  • 保存配置,等待权限生效

修改代码关键部分

你的代码缺少了模拟G Suite域内用户的步骤,同时修复路径拼写错误,修改后的代码如下:

<?php
// 修复单引号缺失和路径分隔符问题
$credentials = 'credentials.json';
require __DIR__ . '/vendor/autoload.php';

$client = new Google_Client();
$client->setScopes(Google_Service_Calendar::CALENDAR);
$client->setAuthConfig($credentials);
// 关键:模拟G Suite域内的用户(替换为你的域内邮箱,比如admin@your-domain.com)
$client->setSubject('your-domain-user@your-domain.com');

$service = new Google_Service_Calendar($client);

$event = new Google_Service_Calendar_Event(array(
    'summary' => 'Testing for g calender',
    'location' => 'ABC',
    'description' => 'A chance to hear more about Google\'s developer products.',
    'start' => array(
        'dateTime' => '2022-01-05T09:00:00-07:00',
        'timeZone' => 'America/Los_Angeles',
    ),
    'end' => array(
        'dateTime' => '2022-01-05T17:00:00-07:00', // 修正原结束时间不合理的问题
        'timeZone' => 'America/Los_Angeles',
    ),
    'recurrence' => array(
        'RRULE:FREQ=DAILY;COUNT=2'
    ),
    'attendees' => array(
        array('email' => 'attendee1@gmail.com'),
        array('email' => 'attendee2@gmail.com')
    ),
    'reminders' => array(
        'useDefault' => FALSE,
        'overrides' => array(
            array('method' => 'email', 'minutes' => 24 * 60),
            array('method' => 'popup', 'minutes' => 10),
        ),
    ),
));

$calendarId = 'primary';
$event = $service->events->insert($calendarId, $event);
printf('Event created: %s\n', $event->htmlLink);

额外检查项

  • 确认模拟的域内用户拥有Google Calendar的编辑权限
  • 检查G Suite管理员是否允许向外部邮箱发送邀请:进入Calendar设置>「共享权限」,确保允许外部用户访问并接收邀请
  • 验证credentials.json文件路径正确,且PHP进程有读取权限

内容的提问来源于stack exchange,提问作者tabyf5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:40:34