Php 通过Google Cal API检索内容时出现问题

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

工作在一个可湿性粉剂插件。它的最终目的是作为家庭检查员的检查日历。我们正在使用一个已经加载了大量事件的谷歌日历

我正在通过Oauth2&a服务帐户进行身份验证。该插件只需要访问检查公司的数据,而不需要访问其他私人用户数据

代码如下:

    // 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) { }