无法使用 google 日历 api php 创建活动
Can't create an event using google calendar api php
我已按照 google 的 php 快速入门和 events.insert 页面的所有说明进行操作;但是当我 运行 它弹出同意书时,我单击允许然后除了同意书什么都没有发生我将重定向 url 更改为另一个页面然后它不再重置同意书, 但仍然没有任何反应。
$client = new Google_Client();
$client->setAuthConfig('redacted');
$client->addScope("https://www.googleapis.com/auth/calendar");
$client->addScope("https://www.googleapis.com/auth/calendar.events");
$client->setRedirectUri('http://redacted/GoogleClientWorksCalendar.php');//this is the current file
$client->setAccessType('offline');
$client->setIncludeGrantedScopes(true);
$client->setPrompt('consent');
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
$service = new Google_Service_Calendar($client);
$event = new Google_Service_Calendar_Event(array(
'summary' => 'test',
'location' => 'somewhere',
'description' => 'test description',
'start' => array(
'dateTime' => '2020-09-03T09:00:00+02:00',
),
'end' => array(
'dateTime' => '2020-09-03T17:00:00+02:00',
),
));
$calendarId = 'redacted';
$results = $service->events->insert($calendarId, $event);
谢谢。
我已经解决了我的问题。问题是我忘记了所需的 google Oauth2.0 代码的一部分,这意味着我从未收到访问令牌。
下面的代码片段功能齐全。希望对大家有所帮助,谢谢大家的回答。
$client = new Google_Client();
$client->setAuthConfig('redacted');
$client->addScope("https://www.googleapis.com/auth/calendar");
$client->addScope("https://www.googleapis.com/auth/calendar.events");
$client->setRedirectUri('http://redacted/GoogleClientWorksCalendar.php');//this is the current file
$client->setAccessType('offline');
$client->setIncludeGrantedScopes(true);
$client->setPrompt('consent');
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
$client->authenticate($_GET['code']);
$access_token = $client->getAccessToken();
$client->setAccessToken($access_token);
$service = new Google_Service_Calendar($client);
$event = new Google_Service_Calendar_Event(array(
'summary' => 'test',
'location' => 'somewhere',
'description' => 'test description',
'start' => array(
'dateTime' => '2020-09-03T09:00:00+02:00',
),
'end' => array(
'dateTime' => '2020-09-03T17:00:00+02:00',
),
));
$calendarId = 'redacted';
$results = $service->events->insert($calendarId, $event);
我已按照 google 的 php 快速入门和 events.insert 页面的所有说明进行操作;但是当我 运行 它弹出同意书时,我单击允许然后除了同意书什么都没有发生我将重定向 url 更改为另一个页面然后它不再重置同意书, 但仍然没有任何反应。
$client = new Google_Client();
$client->setAuthConfig('redacted');
$client->addScope("https://www.googleapis.com/auth/calendar");
$client->addScope("https://www.googleapis.com/auth/calendar.events");
$client->setRedirectUri('http://redacted/GoogleClientWorksCalendar.php');//this is the current file
$client->setAccessType('offline');
$client->setIncludeGrantedScopes(true);
$client->setPrompt('consent');
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
$service = new Google_Service_Calendar($client);
$event = new Google_Service_Calendar_Event(array(
'summary' => 'test',
'location' => 'somewhere',
'description' => 'test description',
'start' => array(
'dateTime' => '2020-09-03T09:00:00+02:00',
),
'end' => array(
'dateTime' => '2020-09-03T17:00:00+02:00',
),
));
$calendarId = 'redacted';
$results = $service->events->insert($calendarId, $event);
谢谢。
我已经解决了我的问题。问题是我忘记了所需的 google Oauth2.0 代码的一部分,这意味着我从未收到访问令牌。 下面的代码片段功能齐全。希望对大家有所帮助,谢谢大家的回答。
$client = new Google_Client();
$client->setAuthConfig('redacted');
$client->addScope("https://www.googleapis.com/auth/calendar");
$client->addScope("https://www.googleapis.com/auth/calendar.events");
$client->setRedirectUri('http://redacted/GoogleClientWorksCalendar.php');//this is the current file
$client->setAccessType('offline');
$client->setIncludeGrantedScopes(true);
$client->setPrompt('consent');
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
$client->authenticate($_GET['code']);
$access_token = $client->getAccessToken();
$client->setAccessToken($access_token);
$service = new Google_Service_Calendar($client);
$event = new Google_Service_Calendar_Event(array(
'summary' => 'test',
'location' => 'somewhere',
'description' => 'test description',
'start' => array(
'dateTime' => '2020-09-03T09:00:00+02:00',
),
'end' => array(
'dateTime' => '2020-09-03T17:00:00+02:00',
),
));
$calendarId = 'redacted';
$results = $service->events->insert($calendarId, $event);