如何使用Google Calendar API v3服务定义要连接的日历

时间:2014-11-24 18:09:24

标签: google-api google-calendar-api google-oauth google-api-php-client

我试图在我的网页上以格式化的方式列出某个公共日历中的所有事件,而不会让我的网站的一般/公共访问者以任何方式登录或进行身份验证。自2010年12月以来,我一直在使用v1和Zend Framework。 2014年11月17日,Google弃用v1和v2,现在我的网页已损坏。

以下是我迄今为止所做的事情:

  1. 在Google Developer's Console中创建了一个项目
  2. 启用了Calendar API
  3. 从GitHub(昨天 - 版本1.1.1)
  4. 在我的服务器上安装了PHP客户端库
  5. 确保我的服务器上安装了JSON PHP Extension
  6. 创建了OAuth 2.0凭据
  7. 创建了公共API访问密钥
  8. 确保我的日历仍然可以公开查看(自2010年12月以来)
  9. 以下是我的代码段:

    require_once 'autoload.php'; // 2014-11-24 part of /usr/local/lib/php/google-api-php-client
    $client = new Google_Client();
    $client->setApplicationName("One_of_my_Calendars");
    $client->setDeveloperKey("MY-PUBLIC-API-ACCESS-KEY"); // 2014-11-24 my Public API Access Key
    $service = new Google_Service_Calendar($client);
    $results = $service->events->listEvents('primary');
    

    以下是我收到的错误消息:

    Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling GET https://www.googleapis.com/calendar/v3/calendars/primary/events?key=MY-PUBLIC-API-ACCESS-KEY: (403) Access Not Configured. The API is not enabled for your project, or there is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your configuration.' in /usr/local/lib/php/google-api-php-client/src/Google/Http/REST.php:76 Stack trace: #0 /usr/local/lib/php/google-api-php-client/src/Google/Http/REST.php(41): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request)) #1 /usr/local/lib/php/google-api-php-client/src/Google/Client.php(548): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request)) #2 /usr/local/lib/php/google-api-php-client/src/Google/Service/Resource.php(190): Google_Client->execute(Object(Google_Http_Request)) #3 /usr/local/lib/php/google-api-php-client/src/Google/Servi in /usr/local/lib/php/google-api-php-client/src/Google/Http/REST.php on line 76
    

    屏幕截图:

    https://drive.google.com/file/d/0Bytqhoir_Tt5ODRaNzRvS2FZRWs/view?usp=sharing https://drive.google.com/file/d/0Bytqhoir_Tt5MzlqLWF2Q3M2bUk/view?usp=sharing

1 个答案:

答案 0 :(得分:2)

假设您正在访问公共日历(因此不需要Oauth2),仍然存在两个问题:

问题1您需要从开发人员控制台中启用了Calendar API的项目中获得有效的API密钥。

问题2是您对关键字" primary"的使用没有经过身份验证。将其替换为您要访问的日历的电子邮件地址。