【问题标题】:Google Calendar can't subscribe to icalendar feed over https?Google 日历无法通过 https 订阅 icalendar 提要?
【发布时间】:2012-10-01 05:48:36
【问题描述】:

是否有人会知道 Google 日历在订阅 iCalendar 提要在安全的 https 地址上服务时是否存在问题?

我正在开发一个在 https 地址上运行的网站,该网站具有用户可以订阅的 iCalendar 提要。该提要在 Outlook 和 iCal 中运行良好,但在 Google 日历中却不行。当用户尝试订阅提要时,他们会收到错误消息“无法获取 URL”

我怀疑提要或生成的 iCalendar 数据有问题,因此我运行了通过多个验证器生成的 .ics 文件,它们都很好。为了排除提要本身的错误,我将生成的 .ics 文件放在服务器上,以查看静态文件是否可以工作,并且在 Google 日历中也失败了。然后我将文件放在不安全 (http) url 后面的完全不同的服务器上,这很有效!

所以我开始怀疑 httpS 是问题所在。服务器的证书是有效的,所以应该不会造成任何问题。此外,验证器可以很好地访问提要(和静态文件)。

这个 google 小组讨论表明其他人也有类似的怀疑:http://productforums.google.com/forum/#!topic/calendar/61-eUd-fyrg

问题是,该网站必须通过 https 运行,所以我不能只切换到 http 来使提要工作。

因此,如果有人有任何信息证实或反驳我的理论,或者有任何关于其他可能导致这些问题的想法,我将不胜感激。

【问题讨论】:

  • outlook.office365.com 是否存在兼容性问题?每当我输入以 .ics 结尾的 Outlook 地址时,我似乎都会从 Google 收到“无法获取 URL”错误

标签: https google-calendar-api icalendar


【解决方案1】:

截至 2020 年 1 月,该问题似乎已得到解决 - Google 日历在订阅和更新有效的 RFC5545 日历时似乎没有问题。 icalender.org validator 运行良好,可以同时测试文件和链接(订阅)。

【讨论】:

    【解决方案2】:

    我们在案例中发现的问题是 Google 日历当前忽略了 URL 中的 HTTPS 指示,而是通过 HTTP 访问。如果您的 HTTP 请求重定向到 HTTPS 或仅通过 HTTP 提供内容,那么它将起作用。如果您有防火墙阻止端口 80,那么事情就会挂起,游戏就结束了。

    TL;DR:如果您的 URL 在 https 之外还可以与 http 一起使用,那么当您将其输入为 https 时,它将与 Google 日历一起使用。 (假设 robots.txt 不限制访问。)否则会失败。

    【讨论】:

      【解决方案3】:

      我遇到了很多困难:

      这很令人沮丧,因为下载的文件会在 Google 日历或 iCal 中打开,但它不会作为提要加载。当我通过 URL 添加时,我会在 Google 日历中收到这些错误:“无法从(站点名称)导入日历”或“无法获取 URL。”

      这是我必须做的:

      有事件的持续时间或结束时间,而不是两者。

      我还必须从标题中删除它: 内容处置:附件;文件名=Schedule.ics;

      另外,要检查它是否有效,请使用 Google ical 验证器。

      【讨论】:

        【解决方案4】:

        我可以确认(今天)Google 日历可以成功订阅 HTTPS iCal 供稿。

        您可以通过添加此 URL 自行测试:https://events.stanford.edu/byCategory/2/eventlist.ics

        为了更加确定,我还做了另一项测试,给它一个 HTTPS url,如果你替换 https -> http,它 不起作用。这也很好,所以在所有情况下,HTTPS 都应该工作。

        在我的测试中不起作用的是:

        • HTTP 身份验证 (https://myusername:mypw@example.com/) - 我得到“无法获取 URL” - 但这不是这个问题要问的。
        • 任何超过 256 个字符的 URL。但是,使用链接缩短器(例如 goo.gl)可以解决此问题。

        【讨论】:

        • 使用 URL 缩短器为我修复了它
        • 这在过去可能有效,但目前 Google 日历实际上似乎通过 HTTP 加载内容,即使 URL 是 HTTPS。因此,如果您仍然有一个“纯”https URL 有效的示例,我很想看看它。
        • @Chopmo 它肯定仍然有效。我们的产品 (Close.io) 仅通过 HTTPS 加载,通过 iCal 源同步仍然有效。
        • @philfreo 好的,感谢您告诉我。我现在看到我的 iCal 链接现在仍然有效,即使它同时通过 HTTP 和 HTTPS 提供服务,所以问题一定出在其他地方。
        • 只是为将来的读者总结一下:原来我的错误是由 Google 日历发送“错误”的 Accept 标头引起的。在其他日历发送“文本/日历”的情况下,如 here 所述,Google 日历发送的类型被我的 Rails 应用程序读取为 HTML(可能是文本/html,我不确定)。
        【解决方案5】:

        Google 已确认 HTTPS 确实存在问题,即 Google 日历无法从外部加密 (https) URL 订阅 iCalendar 供稿。

        我的雇主在 Google 有一个企业帐户,我们向 google 的企业支持提出了支持请求,其中包含示例供稿和我们自己对问题的评估。

        今天,我们终于得到了正确的答案,确认了我们的初步分析,并通知我们已通知正确的技术团队,并已打开内部功能请求(用于支持来自 https-urls 的提要)。

        我们没有得到修复的任何时间表,但我要求他们在问题解决后与我们联系。收到后,我会将该信息添加到此答案中。

        【讨论】:

        • 无法使用 HTTP。我可以使用 URL 下载 .ics 文件,但 Google 无法导入它。
        【解决方案6】:

        如果服务器有一个 robots.txt 阻止谷歌,这也是我谷歌日历失败的原因。那么,您是否尝试过查看您的 https 服务器的 robots.txt?

        话虽如此,这并不是谷歌日历 + https 的限制,因为谷歌日历为其 .ics 文件的“私人地址”提供 https 并且它也可以接受来自 google.com 的 https(尽管这只是一种配置超过许多其他可能)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-02-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-09
          • 2011-04-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多