【问题标题】:Show google calendar within my ASP.NET Core MVC 2.2 project在我的 ASP.NET Core MVC 2.2 项目中显示谷歌日历
【发布时间】:2019-08-04 06:37:44
【问题描述】:

我只是希望我的用户能够在我的应用程序中访问他们的(不是我的!)谷歌日历。我不需要他们谷歌日历中的任何数据。所以首先我尝试了一个简单的 iframe,但谷歌阻止了这个。

我试过这个:https://developers.google.com/calendar/quickstart/js。它工作正常,但我只能从谷歌日历访问数据,但我没有日历视图..

那么显示用户谷歌日历的最简单方法是什么

【问题讨论】:

  • 如果您尝试与之合作的人不希望您向他们展示他们的日历怎么办?这是一件私人的事情,是什么让你认为谷歌只会允许你弹出某人的私人日历,看似在你的网页上?您能看到恶意个人如何利用它吗?该 API 旨在允许您发送和接收特定信息(用户已授权)
  • 你知道应用程序 FRANZ 吗?这是一个桌面应用程序,谷歌日历也集成在那里,就像我想要的那样。它只是显示谷歌日历的网站,然后我可以登录网站..
  • 我想“FRANZ”(不,我从未听说过)从谷歌查询数据并将其呈现给您自己。
  • 我不这么认为,因为该页面看起来与网站一模一样。我不确定,也许它正在工作,因为它是使用 webview 的桌面应用程序?
  • 可能。桌面应用程序也可以是浏览器。所以它可能只是浏览到网页

标签: c# asp.net-core asp.net-core-mvc google-calendar-api asp.net-core-2.2


【解决方案1】:

您需要研究 X-Frame-Options 标头的工作原理。 Google 日历以两种可能的方式响应日历请求:

  1. 如果相关日历标记为“公开”,则返回的响应没有“X-Frame-Options”标头,因此您可以在您的站点中呈现它。

  2. 如果相关日历未标记为公共,则响应包括“X-Frame-Options”标头,其值设置为 DENY。根据 HTTP 规范,这意味着您不能在 IFrame 中显示响应,并且假设您使用的是基于标准的浏览器,您无能为力。

您提到的另一个应用程序可能包含一个 Web 浏览器控件,因此直接呈现日历,这意味着框架选项不会影响它,但没有一种在浏览器内模拟它的好方法(再次,部分HTTP 规范和预期的)。

如果您真的希望能够向他们展示他们的日历,您最好的选择是使用您提到的 API 端点中的数据,然后生成您自己的视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-21
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多