PHP-无法使用API​​密钥创建新的Google日历事件

时间:2019-07-24 18:32:19

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

我正在尝试仅使用我创建的API Key插入新事件。

问题是,当我仅使用FreeBusy检查可用时间时,一切正常,但是当我尝试创建并插入新事件时,出现以下错误:

Uncaught Google_Service_Exception: {
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

向Google Calendar API的授权请求页面中指出:

  

您的应用程序必须使用OAuth 2.0来授权请求​​。没有别的   支持授权协议。如果您的应用程序使用Google   登录后,会为您处理授权的某些方面。

但是我不能每次要求手动授权访问日历。

如何在不手动授权的情况下授权请求并插入新事件?

1 个答案:

答案 0 :(得分:0)

如果要执行服务器到服务器的API请求,则需要使用服务帐户。请参阅https://developers.google.com/calendar/auth

通常,您将创建一个密钥,然后下载提供的JSON文件。然后,您可以调用$client->setAuthConfig($jsonPath);来设置身份验证。将私钥保留在Web根之外可能是一个好主意。然后使用$client->addScope('https://www.googleapis.com/auth/calendar')设置范围,并使用$service = new Google_Service_Calendar($client);实例化Calendar服务。现在,您应该可以执行您的工作了。

您可能还需要与生成的与服务帐户相关联的电子邮件地址共享日历。