Php 通过Google Cal API检索内容时出现问题
工作在一个可湿性粉剂插件。它的最终目的是作为家庭检查员的检查日历。我们正在使用一个已经加载了大量事件的谷歌日历 我正在通过Oauth2&a服务帐户进行身份验证。该插件只需要访问检查公司的数据,而不需要访问其他私人用户数据 代码如下:Php 通过Google Cal API检索内容时出现问题,php,google-calendar-api,Php,Google Calendar Api,工作在一个可湿性粉剂插件。它的最终目的是作为家庭检查员的检查日历。我们正在使用一个已经加载了大量事件的谷歌日历 我正在通过Oauth2&a服务帐户进行身份验证。该插件只需要访问检查公司的数据,而不需要访问其他私人用户数据 代码如下: // Set up identity ------------------------------------. $client_email = "XXXXXX@XXXXXXXXXX.iam.gserviceaccount.com"; $pr
// Set up identity ------------------------------------.
$client_email = "XXXXXX@XXXXXXXXXX.iam.gserviceaccount.com";
$private_key = file_get_contents( EC_INSPECT_CAL_INC . "/HE_Web_1.p12" );
$scope = [ "https://www.googleapis.com/auth/calendar","https://www.googleapis.com/auth/calendar.readonly","https://www.google.com/calendar/feeds" ];
$credentials = new \Google_Auth_AssertionCredentials(
$client_email,
$scope,
$private_key
);
// Build Config Obj ------------------------------------.
$config = new \Google_Config();
$config->setClassConfig('Google_Cache_File', array('directory' => EC_INSPECT_CAL_INC . '/tmp/cache'));
// Instantiate Client Connection ------------------------.
$client = new \Google_Client( $config );
$client->setAssertionCredentials( $credentials );
if( $client->getAuth()->isAccessTokenExpired() )
$client->getAuth()->refreshTokenWithAssertion();
$service = new \Google_Service_Calendar( $client );
$calendarList = $service->calendarList->listCalendarList();
while( true )
{
foreach( $calendarList->getItems() as $calendarListEntry )
{
// get events
$events = $service->events->listEvents( $calendarListEntry->id );
foreach( $events->getItems() as $event )
echo "-----".$event->getSummary() . "<br>";
}
$pageToken = $calendarList->getNextPageToken();
if( !$pageToken ) break;
$optParams = array('pageToken' => $pageToken);
$calendarList = $service->calendarList->listCalendarList($optParams);
}
}
其结果是:
array(0) { }
我妻子希望我不要再当着狗的面咒骂了,但我似乎不明白自己忽略了什么。日历已加载内容,我(AFAIK)正在验证。。。那么货物在哪里???首先,服务帐户的日历列表不存在。其次,您可能希望列出应该使用events.list()的事件。第三,您需要指定要访问的日历的ID,并且需要确保服务帐户可以访问该日历(您可以通过在web ui中与服务帐户共享日历来实现)。感谢您的指导,Luc。我确实在周末共享了一个测试日历,并且可以查看事件。
array(0) { }