无法使用Google Calendar api php创建事件

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

我已按照Google的所有说明,PHP快速入门和events.insert页面进行操作;但是当我运行它时,会弹出同意书,我单击允许,然后没有任何事情会阻止同意书重置。如果我将重定向网址更改为另一页,则它不再重置同意书,但仍然没有任何反应。

$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);

谢谢。

php google-api google-calendar-api google-oauth google-api-php-client
1个回答
0
投票

我已经解决了我的问题。问题是我忘记了所需的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);

© www.soinside.com 2019 - 2024. All rights reserved.