PHP - 无法使用 API 密钥创建新的 Google 日历活动



我正在尝试仅使用我创建的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 日历 API 授权请求页面中指出:

应用程序必须使用 OAuth 2.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); 实例化日历服务。你现在应该能够做你的事情了。

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

最新更新