使用 PHP API oauth2.0 的 Google 日历服务帐户 - 如何访问未共享的日历

2024-01-05

我在使用 Google 提供的 PHP 库读取日历事件时遇到问题。我想要阅读的日历不是公开共享的,但我想在我的服务器应用程序上阅读它们。

尽管日历是与我共享的,但保存日历的帐户与我的帐户是分开的(我将其称为 API 帐户)。

根据 Google 上未公开共享的日历详细信息:

任何人都可以:什么也看不到

您可以: 仅查看空闲/忙碌(隐藏详细信息)。

API 帐户和我的帐户都有一个带有 P12 密钥的 OAuth2.0 服务帐户。

我遵循了以下指南:http://www.daimto.com/google_service_account_php/ http://www.daimto.com/google_service_account_php/这帮助我弄清楚了身份验证过程。我已经成功地阅读了公开共享的日历,在任何一个帐户上都没有任何问题。这是我的代码:

// Start the Google client
$client = new Google_Client();
$client->setClientId({{client_id from google}});
$client->setApplicationName("Project Name");
$client->setClientSecret({{client_secret from google}});
$key = file_get_contents({{key_file_location on my server}});
$cred = new Google_Auth_AssertionCredentials(
        $Email_address,
        // Scopes that we will be using
        array(
           "https://www.googleapis.com/auth/calendar"
        ),
        $key
);

$client->setAssertionCredentials($cred);

if($client->getAuth()->isAccessTokenExpired()) {
    $client->getAuth()->refreshTokenWithAssertion($cred);
}

// Use Google Calendar API plugin
$service = new Google_Service_Calendar($client);

$optParams = array(
    'singleEvents'=> true,
    'timeMin'=>date(DateTime::ATOM),
    'timeMax' => date(DateTime::ATOM, time()+(3 * 24 * 60 * 60))
);

$results = $service->events->listEvents(
    '{{Calendar ID from Google Calendar Settings}}',
    $optParams
);

但是,当尝试将代码用于未公开共享的日历时,我在任一帐户上都会收到以下错误:

致命错误:未捕获异常“Google_Service_Exception” 消息“调用 GET 时出错”https://www.googleapis.com/calendar/v3/calendars https://www.googleapis.com/calendar/v3/calendars{{日历ID}}:(404) 未找到...

当我尝试时var_dump($client->getAuth()),我注意到有一个值可能表明身份验证不起作用:["authenticated":"Google_Client":private]=> bool(false)。这会发生在两个帐户以及公开共享和公开未共享的日历上。

我可以通过我的帐户使用 Google API Explorer 在未公开共享的日历上显示 JSON 数据。 Google PHP API 或 Google 帐户设置是否缺少某些内容,无法让我做我想做的事情?

感谢您的时间。


如果您想使用服务帐户访问私人日历,如果您拥有包含这些日历的域,则需要执行权限委派 (https://developers.google.com/drive/web/delegation https://developers.google.com/drive/web/delegation描述它用于驱动器,但它适用于日历),或者您将需要与服务帐户的电子邮件地址共享私人日历。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP API oauth2.0 的 Google 日历服务帐户 - 如何访问未共享的日历 的相关文章

  • __callStatic():从静态上下文实例化对象?

    我对 PHP 中的 静态 和 动态 函数和对象如何协同工作感到困惑 特别是在 callStatic 方面 callStatic 的工作原理 您可以有一个普通的班级 MyClass 在班级内您可以 放置一个名为 callStatic 的静态函
  • 从 FilterControllerEvent 监听器重定向到另一个 Symfony 路由

    我正在尝试设置一个 kernel controller 侦听器 以便在函数返回 true 时重定向到另一个路由 我有可用的路线 但无法使用此路线设置控制器 event gt setController 我收到以下错误 FilterContr
  • 为什么AES java解密返回额外的字符?

    请原谅我英语不好 我使用 mcrypt 我从这里得到它用于 php 和 java 的 MCrypt https snipt net raw ee573b6957b7416f28aa560ead71c3a2 nice 在我的android应用
  • cURL 错误 77:设置证书验证位置时出错:CAfile

    我正在使用 Firebase php SDKlink https firebase php readthedocs io en latest index html并在 Windows 10 上的 XAMPP 服务器上使用 laravel 最
  • 如何在MAMP中设置环境变量?

    如何在 MAMP 版本 3 3 中设置环境变量 我可以在我的 PHP 应用程序中使用它 我已经更新了 Applications MAMP Library bin envvars and envvars std file并添加以下行 Lice
  • session_regenerate_id 没有创建新的会话 id

    我有一个脚本 旨在完成当前会话并开始新的会话 我使用了一段代码 它在我的开发计算机上运行良好 但是 当我将其发布到生产服务器时 会话 ID 始终保持不变 以下是我重新启动会话的代码 session start SESSION array P
  • 使用 php 更改白天和黑夜的背景?

    我正在制作一个 tumblr 页面 我的 html 页面有两种不同的背景 我希望白天背景从早上 7 点到晚上 8 点显示 夜间背景从晚上 8 点到早上 7 点显示 我决定用 php 来做这件事 但对于 php 来说我是个新手 我的朋友给我发
  • 如何以编程方式获取 WooCommerce 中的所有产品?

    我想获取 WooCommerce 中的所有产品数据 产品 sku 名称 价格 库存数量 可用性等 我可以使用 wp query 来做到这一点吗 这样你就可以通过 wp query 获取所有产品 global wpdb all product
  • Laravel 广播:通知与事件

    我阅读了 laravel 文档Events and Notifications 似乎我们可以触发一个事件 并从该事件中触发 使用ShouldBroadcast接口 将其广播到我理解的 laravel echo 另一方面我们可以使用通知via
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • 使用日语“Enter”键进行搜索功能

    我在日语方面遇到了问题 我有一个允许用户搜索数据的表单 当用户输入要搜索的字符串并按 Enter 键时 搜索功能就会执行 我的代码是 formSearch input keyup function event var key event c
  • CakePHP Xml 实用程序库触发 DOMDocument 警告

    我正在使用 CakePHP 在视图中生成 XMLXML核心库 http book cakephp org 2 0 en core utility libraries xml html xml Xml build data array ret
  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • PHP - hash_pbkdf2 函数

    我正在尝试使用此 php 函数执行一个函数来哈希密码 http be php net manual en function hash pbkdf2 php http be php net manual en function hash pb
  • PHP7构造函数类名

    我有一个 Laravel 4 2 应用程序 它可以与 PHP5 一起使用 没有任何问题 由于我安装了一个运行 PHP7 的新 vagrant box 一旦我运行一个模型 其中函数名称与类名称 关系函数 相同 就会出现错误 如下所示
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组
  • 如何为 ApplicationController 中 after_action 过滤器中的所有操作渲染 json?

    是否可以在 Rails ApplicationController 中创建一个 after filter 方法 该方法在每个操作上运行并呈现为 JSON 我正在构建一个 API 并且希望将控制器中的每个操作的输出呈现为 JSON 客户控制器
  • 将 MySQL 结果作为 PHP 数组

    mysql 表 config name config value allow autologin 1 allow md5 0 当前的 php 代码 sth mysql query SELECT rows array while r mysq
  • Zend Framework Zend_Form 装饰器: 位于按钮元素内部?

    我有一个像这样创建的按钮元素 submit new Zend Form Element Button submit submit gt setLabel My Button submit gt setDecorators array Vie
  • 从节点服务器访问 Google Calendar API

    由于某种原因 我很难访问 Google 日历 我希望能够在 Node js 服务器的日历中添加和删除事件 我从文件中发现了非常矛盾的信息 我跟着 https developers google com identity protocols

随机推荐

  • 如何使用 C++ 获取 Linux 中的总 cpu 使用率

    我正在尝试获取 CPU 总使用率 以百分比为单位 首先我应该首先说 top 根本不行 因为CPU转储之间存在延迟 它需要2次转储和几秒钟 这会挂起我的程序 我不想给它自己的线程 接下来我尝试的是 ps 它是即时的 但总是给出非常高的总数 2
  • 错误:属性或索引器不能在此上下文中使用,因为集合访问器无法访问

    我有以下代码 using System using System Collections Generic using System Text using ProjectBase Utils namespace EnterpriseSampl
  • 如何在 Grails 集成测试中使用不同数据发出多个请求

    我正在使用 Spock 插件编写 Grails 2 2 1 集成测试 其中我尝试将两组数据发布到同一控制器端点 when The user adds this product to the inventory def postData pr
  • 在 rvm 中使用多个版本的 ruby​​gems?

    我的计算机上有两个项目 旧的 Rails 2 3 应用程序需要 ruby gems 1 6 并且无法在 ruby gems 1 8 下运行 一个较新的应用程序需要 ruby gems 1 8 并且无法在 ruby gems 1 6 下运行
  • C++ 中的三法则

    我读过 三法则 什么是三法则 https stackoverflow com questions 4172722 what is the rule of three总结如下 如果需要显式声明析构函数 复制构造函数或复制赋值 操作员自己 您可
  • 删除json数组中的数据

    我正在尝试从 json 数组中删除一段数据 例如我有这个数组 var favorites userID 12345678 favorites name My Favorites id 87654321 items productID 112
  • 没有自动隐藏的JavaFX MenuItem [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想要一个 MenuItem 更具体地说是 CheckMenuItem 它不会在单击时自动隐藏 我知道 CustomMenuItem
  • 使用 fs2 将 URL 流式传输到本地文件

    使用 fs2 版本 1 0 4 和 cats effectIO 我可以将 URL 流式传输到本地文件 import concurrent ExecutionContext Implicits global def download spec
  • “编译时”和“运行时”有什么区别?

    我不明白术语 编译时 和 运行时 或 运行时 的含义 我也对 值类型 和 引用类型 的含义以及它们与上述 时代 的关系感到有点困惑 有人可以解释一下这些事情吗 编译时 是指构建代码的时间 编译器将源代码转换为 IL 的时间 运行时 是指执行
  • ‘authority’应该是Uri格式参数名称:authority

    我根据这个例子开发了我的 mvc 应用程序 https github com AzureADSamples WebApp WebAPI OpenIDConnect DotNet https github com AzureADSamples
  • jQuery XML 错误“请求的资源上不存在“Access-Control-Allow-Origin”标头。”

    我正在开发我的个人项目只是为了好玩 我想读取位于以下位置的 xml 文件 http www ecb europa eu stats eurofxref eurofxref daily xml http www ecb europa eu s
  • 在 Java 中预览 HTML [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道哪些库 方法可以在 Swing 中进行一些基本的 HTML 表示 您能评论一下您的经历吗 一个好
  • 如何在 Scaladoc 中全局搜索方法?

    我是否有可能通过 scala 文档在全局范围内搜索类 特征或对象中的方法 示例 我有一个方法名称 但我不知道它属于哪个类 因此我可以在某些 scaladoc 搜索中键入它 它会向我显示包含给定名称的方法的类 PS 我本来会添加标签 scal
  • 插入创建新表

    我有两个大表 想要将所有列名 不是作为视图 合并到一个新表中 I 没有权限右键单击每个表并选择 CREATE TO SCRIPT 所以我想知道是否有一种方法可以将两个表插入到新表中而不指定列数据类型 SELECT top 0 INTO Ne
  • SQL Server 中的四舍五入

    我需要对 SQL Server 中最接近 2 个位置的一些数据类型数字进行四舍五入 Eg Input 123 10000000 Output 123 10 感谢致敬 Ismail 您需要将其转换 Select Convert numeric
  • 如何在已经居中对齐的元素周围添加元素?

    我创建了一个表单 其中一些文本元素垂直对齐 如下所示 它们使用 Flexbox 在页面上水平和垂直居中 my class display flex justify content center align items center flex
  • 在pdf c#中的另一个图像上添加图像水印

    All 我正在尝试使用 itextsharp 在 pdf 中添加图像水印 水印按预期出现在所有页面上 但其中已经有图像 我希望我的水印图像位于 pdf 上现有图像的顶部 我正在使用以下代码来添加图像 using Stream output
  • std::size_t 与 size_t 与 std::string::size_type

    哪里有size t当我没有包含任何东西时来自 总是假设是否合理size t std size t 我什么时候应该使用size type in std容器 string size type vector
  • Unity3D XML(-RPC) 和 C#

    我实际上是在这里回答我自己的问题 我一定是世界上唯一尝试这样做的人 但考虑到我花了大约一周的时间才解决这个问题 我想如果还有另一个人想在 Unity 中使用 XML RPC 我将为他们省去一周的麻烦 我想做的是与我们的游戏服务器之一对话以获
  • 使用 PHP API oauth2.0 的 Google 日历服务帐户 - 如何访问未共享的日历

    我在使用 Google 提供的 PHP 库读取日历事件时遇到问题 我想要阅读的日历不是公开共享的 但我想在我的服务器应用程序上阅读它们 尽管日历是与我共享的 但保存日历的帐户与我的帐户是分开的 我将其称为 API 帐户 根据 Google