将事件插入到我自己的主日历之外的其他日历 - 404 Not Found Error

时间:2014-10-21 04:59:01

标签: php google-api google-calendar-api

我需要将事件插入不属于我的多个日历(其他用户)。 它不一定要在一个命令中......

要测试Google日历API,我使用"插入"将新事件添加到我自己的日历中并且工作正常:

    // Create service from client
require_once "google-api-php-client-master/src/Google/Client.php";
require_once "google-api-php-client-master/src/Google/Service.php";

$client = new Google_Client();
$client->addScope("https://www.googleapis.com/auth/calendar");
$client->setAccessToken(htmlspecialchars_decode(get_access_token()));

$event = new Google_Service_Calendar_Event();
$event->setSummary($bean->name);
$event->setLocation($bean->location);
$event->setDescription($bean->description);
...
...

$service = new Google_Service_Calendar($client);
$createdEvent = $service->events->insert($user->google_cal_id_c, $event);

问题在于,当我操作"插入"与我的同事日历ID(我从他的日历设置中取出)作为参数并尝试在他的日历中插入一个事件, 我得到了#34; 404找不到"错误。

更新

我注意到,当同事与我分享他的日历时,我才能插入该事件。 这是否意味着我的所有60名同事都需要与我的(小学)分享他们的日历? 因为我真的不想要那个! 我不能将活动添加到不与我分享的日历中吗?

1 个答案:

答案 0 :(得分:0)

最简单的方法是获取每个同事的访问权限并使用这些权限进行身份验证。但是,当您不想单独询问他们的每个访问令牌时,有两种主要方法可以将事件插入到人们的日历中:

  1. 您可以将其添加为您的活动的与会者,然后向他们发送电子邮件并将其添加到他们的日历中
  2. 如果您位于同一个域中且正在为该域编写应用程序,则可以创建服务帐户(https://developers.google.com/accounts/docs/OAuth2ServiceAccount),然后使用域范围的授权委派:https://developers.google.com/drive/web/delegation (是的,该链接适用于驱动器API,但驱动程序和日历之间的身份验证工作完全相同,因此只需用日历替换驱动器位)