首页 > 解决方案 > 谷歌嵌入式 iframe 日历没有一致地显示事件

问题描述

我已经为与我合作的公司建立了一个内部网。Intranet 要求用户使用其 Google 帐户登录才能访问。因此,我还使用默认的 iframe 嵌入为 Google 日历设置了嵌入代码,并使用了一些 php 来换出日历以查看用户的电子邮件以向他们显示适当的日历(例如:以 joe 身份登录@gmail.com 将使用 joe@gmail.com 的地址填充日历,而登录为 jill@gmail.com 将使用 jill@gmail.com 的地址填充日历)。

这对大多数人来说效果很好,但是我们在某些浏览器上遇到了一些问题,并且错误非常不一致,这使得故障排除变得困难。此外,当我检查源代码时,正确的电子邮件显示在 iframe 中,因此 php 交换可能不是问题。

示例 1:我在 Windows 10 上使用 Firefox 登录。日历按预期工作。

示例 2:我在 Windows 10 上使用 Chrome 登录。日历显示,但事件不显示。没有给出错误。

示例 3:同事 #1 在 Windows 10 上使用 Chrome 登录。日历按预期工作。

示例 4:同事 #2 在 Windows 10 上使用 Chrome 登录。尽管源代码明确指向他的个人日历,但他得到了“您无权查看一个或多个日历”错误,而他无疑可以访问到(他也在 Google 本身上登录了他的 Google 帐户,因此那里也没有冲突)。

示例 5:我在 Windows 10 上以隐身模式使用 Chrome 登录。日历按预期工作。

示例 6:我在 Windows 10 上使用 Edge 登录。日历在初始登录时工作,但是当我导航到另一个页面时,日历仍然显示,但所有事件都消失了,没有显示错误。这种情况一直存在,直到我再次登录。

示例 7:同事 #3 在 Mac OSX 上使用 Chrome 登录。日历在初始登录时工作,但当她导航到另一个页面时,日历仍然显示,但所有事件都消失了,没有显示错误。这种情况一直持续到她再次登录。(这在她使用的任何浏览器中都是一致的)

示例 8:同事 #4 在 Mac OSX 上使用 Chrome 登录。日历按预期工作。

最终,我只是迷失了从哪里开始搜索这些错误并缩小原因。清除缓存有时似乎有效,有时甚至会导致开始弹出不同的错误。有谁知道是什么导致了这些不一致的错误,以及从哪里开始寻找解决这个问题的方法?

标签: iframegoogle-calendar-api

解决方案


将嵌入式 Iframe 日历与其他浏览器一起使用时,这仍然是一个间歇性问题。

以下是针对此问题的一些建议解决方案:

  • 清除缓存和 cookie
  • 在集成日历之前,请单击Google 日历设置中的自定义按钮,了解如何嵌入您的网站,然后尝试探索。
  • 从这篇github 帖子中,rullzer 提出了一种更简洁的方法来处理 IFRAME 上的 cookie,以便为所有 cookie 迁移到宽松的同站点 cookie。

    这只会使 cookie 更加安全。另外,它确保如果您在某个地方嵌入一些公共页面,每个人都会看到完全相同的东西。(因为 IFRAME 不会发送任何 cookie,从而导致真正的“公共页面”呈现)。


推荐阅读