Google Calendar API v3 PHP -> 尝试将新事件创建到单个日历中


Google Calendar API v3 PHP -> Trying to create new events into a single calendar

基本概要:我编写了一个客户端日历,允许人们安排约会并预订时间段(例如,预订记录在数据库中,第二个人不能选择相同的时间段),以便于在提供商端联合和打印这些约会,他们要求我将这些活动推送到单个Google日历。我为它创建了一个谷歌帐户和一个日历,然后创建了在同一谷歌用户下访问日历API的API密钥。因此,我希望我的网站每次都使用此用户的凭据来创建事件。这似乎是一个"服务帐户",但是它似乎无法访问用户数据,甚至无法访问创建应用程序的用户。

关于如何做到这一点的任何想法?如果看起来它应该非常简单,并且我不可能是第一个想要做这样的事情的人,但如果我能找到任何这样的例子,那就该死了。

下面是一段代码

$event = new Google_Event();
$event->setSummary($title);
$event->setLocation($location);
$start = new Google_EventDateTime();
$start->setDateTime($date . 'T' . $startTime . ':00.000-06:00');
$event->setStart($start);
$end = new Google_EventDateTime();
$end->setDateTime($date . 'T' . $endTime . ':00.000-06:00');
$event->setEnd($end);
$attendee1 = new Google_EventAttendee();
$attendee1->setEmail($email);
$attendees = array($attendee1);
$event->attendees = $attendees;
$client = new Google_Client();
$service = new Google_CalendarService($client);
$createdEvent = $service->events->insert('my calendar ID', $event);

和错误

Uncaught exception 'Google_ServiceException' with message 'Error calling POST https://www.googleapis.com/calendar/v3/calendars/projecthimcal@gmail.com/events?key=AIzaSyAfSCfLJCMSkGRmjZXRtChPPcMNmEuCZow: (401) Login Required' in /home/mydomain.com/wp-content/themes/mytheme/libs/gAPI/io/Google_REST.php:66

也许有点太晚了...但是您必须设置身份验证。

这是我用于我的代码,希望它可以帮助仍在寻找这个的人(请注意,我使用了 api PHP 客户端,类名可能与您的不同,但逻辑仍然相同):

   require_once"谷歌/客户端.php";    require_once"谷歌/服务/日历.php";    session_start();    $client = 新Google_Client();    $client->setApplicationName("Google Calendar PHP Starter Application");    访问 https://code.google.com/apis/console?api=calendar 以生成您的    客户端 ID、客户端密码,并注册重定向 URI。    $client->setClientId('');    $client->setClientSecret('');    $client->setRedirectUri('');    $client->setDeveloperKey('');    $client->setScopes(array(        "https://www.googleapis.com/auth/plus.me",        "https://www.googleapis.com/auth/userinfo.email",        "https://www.googleapis.com/auth/userinfo.profile",        "https://www.googleapis.com/auth/calendar",        "https://www.googleapis.com/auth/calendar.readonly"    ));    $cal = 新Google_Service_Calendar($client);    if (isset($_GET['logout'])) {        unset($_SESSION['token']);    }    if (isset($_GET['code'])) {        $client->身份验证($_GET["代码"]);        $_SESSION['token'] = $client->getAccessToken();        标头("位置:http://" . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"]);    }    if (isset($_SESSION['token'])) {        $client->setAccessToken($_SESSION['token']);    }    if ($client->getAccessToken()) {                   $event = 新 Google_Service_Calendar_Event();        $event->集摘要($title);        $event->集位置($location);        $start = 新Google_Service_Calendar_EventDateTime();        $start->setTimeZone('America/Montreal');        $start->设置日期时间($date ."T" .$startTime .':00.000-06:00');        $event->设置开始($start);        $end = 新Google_Service_Calendar_EventDateTime();        $end->设置时区('美国/蒙特利尔');        $end->设置日期时间($date ."T" .$endTime .':00.000-06:00');        $event->setEnd($end);$attendee 1 = 新Google_Service_Calendar_EventAttendee();        $attendee 1->设置电子邮件($email);        $attendees = 数组($attendee 1);        $event->与会者 = $attendees;        $cal->事件->插入($email, $event);        $_SESSION['token'] = $client->getAccessToken();    } else {        $authUrl = $client->createAuthUrl();        打印"";    }