如何在没有用户身份验证的情况下列出 Google 日历活动

Posted

技术标签:

【中文标题】如何在没有用户身份验证的情况下列出 Google 日历活动【英文标题】:How to list Google Calendar Events without User Authentication 【发布时间】:2015-01-22 21:19:52 【问题描述】:

2014 年 11 月 17 日,Google 弃用了使用 Zend 框架的 Google Calendar API v1 和 v2。

似乎在公开共享的 Google 日历上列出公开共享事件的唯一方法是通过 GitHub 中使用 OAuth 2.0 的新 Google 客户端库 API

这意味着过去用于显示公共事件的公共网站的访问者现在必须进行身份验证和登录。

这是真的吗?没有其他方法可以继续显示公开的 Google 日历活动吗?

【问题讨论】:

我真的需要知道你是如何做到这一点的。有什么代码可以显示吗?我已经阅读了多个答案,说ios中没有可以使用“服务帐户”的api。如果这不是真的,你是怎么做到的。您能否发布一些显示身份验证和查询过程的代码?谢谢! 【参考方案1】:

您需要为此使用Service account。然后,您可以将服务帐户电子邮件地址作为user 添加到您网站的日历中。然后,服务帐户将能够访问此日历,包括事件

【讨论】:

好的,谢谢@DaImTo ...即使日历设置为公共访问?对吗? 你能分享任何“入门”的 php 代码@DaImTo 吗? 我手头上只有一个带有服务帐户的 php Google Analytics。 daimto.com/google_service_account_php 即使它设置为公开,只需将服务帐户电子邮件添加为用户,它就可以访问它。这是最简单的方法,我已经在.net中完成了。我还没有时间为 PHP 做一个教程。 当我尝试通过服务帐户客户端 ID 或电子邮件地址连接时,我收到一个致命错误,显示在 ***.com/questions/27135577/…@DaImTo 我真的需要知道你是如何做到这一点的。有什么代码可以显示吗?我已经阅读了多个答案,说 IOS 中没有可用的 api 可以使用“服务帐户”。如果这不是真的,你是怎么做到的。您能否发布一些显示身份验证和查询过程的代码?谢谢!【参考方案2】:

您仍然可以在没有 Oauth2 的情况下检索所有公共数据,您只需在开发者控制台中注册并创建一个 API 密钥。然后你可以这样做:

GET https://www.googleapis.com/calendar/v3/calendars/<CALENDAR_EMAIL>/events?key=YOUR_API_KEY

【讨论】:

谢谢@luc。这是我使用 YOUR_API_KEY 时的错误消息:致命错误:未捕获的异常 'Google_Service_Exception' 并带有消息'调用 GET googleapis.com/calendar/v3/calendars/google%40example.com/… 时出错:(403) 未配置访问。您的项目未启用 API,或者您的 API 密钥上配置了 per-IP 或 per-Referer 限制,并且请求与这些限制不匹配。请使用 Google Developers Console 更新您的配置。在 /usr/local/lib/php/google-api-php-client/src/Google/Http/REST.php:76 堆栈跟踪:#0 /usr/local/lib/php/google-api-php-client/src/Google/Http/REST.php(41): Google_Http_REST::decodeHttpResponse (对象(Google_Http_Request))#1 /usr/local/lib/php/google-api-php-client/src/Google/Client.php(548):Google_Http_REST :: 执行(对象(Google_Client),对象(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/ /usr/local/lib/php/google-api-php-client/src/Google/Http/REST.php 中的 lib/php/google-api-php-clien 第 76 行 这可能很明显,但需要在开发者控制台中启用日历 API。如果是,您是否使用推荐人?如果是,请尝试不使用推荐人。将该字段留空将允许任何人访问。 谢谢@Andy。是的,日历 API 在这项工作开始时(上周五)已打开。没有推荐人在场 @H.Ferrence 您能否让未经身份验证的用户使用此功能?

以上是关于如何在没有用户身份验证的情况下列出 Google 日历活动的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有用户身份验证的情况下从 Spotify 或任何其他 API 获取歌曲预览

如何在没有?authuser = 1的情况下获得经过身份验证的GCS URL

如何在没有客户端身份验证的情况下从服务器验证 Firebase 用户?

Laravel sanctum 检查用户是不是在没有重定向的情况下通过身份验证

在不打开新窗口/标签的情况下使用 Google 身份验证登录

如何在未经身份验证的情况下从 Google Play 商店请求应用程序信息