【发布时间】:2020-11-03 04:57:03
【问题描述】:
我正在构建一个嵌入数据工作室报告的 Web 应用程序。我遇到的挑战是我希望只允许从 Web 应用程序内部访问报告。为此,我的想法是不要共享报告并使用访问令牌查看嵌入式报告。
documentation here 说明调用google api时,可以附加访问令牌作为查询参数。这种类型的解决方案适用于来自谷歌驱动器的文件;但是,没有官方 api 来获取数据工作室报告,所以我认为也许通过调用嵌入式链接或预览链接并将访问令牌作为查询参数附加就可以了,但事实并非如此。
例如,假设嵌入的 url 是:https://datastudio.google.com/embed/reporting/0BxscwH5YAPRRMVRWYTZVOMMptbVk/page/m2YH
如果我在使用有权查看报告的用户登录 google 时尝试在浏览器中访问该 url,我会得到数据。
如果我在以无权查看报告的用户登录 google 时尝试在浏览器中访问该 URL,我会收到一条消息,指出未经授权...这是预期的。
现在,我按照right here 的步骤操作,并且能够获得访问令牌。我尝试调用网址:
https://datastudio.google.com/embed/reporting/0BxscwH5YAPRRMVRWYTZVOMMptbVk/page/m2YH?access_token=y29.jADSFhkjce0asdfaMDFaso 但它不起作用。
没有文档明确说明这应该有效。我只是想克服我面临的这个挑战。有谁知道是否有办法做到这一点?
附:我还尝试使用包含驱动器 api 范围的访问令牌无济于事。
【问题讨论】:
-
很抱歉发表这种评论(我真的很讨厌自己),但你为什么要这样做?为什么不直接将报告分享给知道链接的任何人并将其嵌入到您的应用程序中? (没有链接,没有人会访问它)我认为您的“硬编码身份验证机制”不会比 Google 已经为每个报告提供的随机数(=0BxscwH5YAPRRMVRWYTZVOMMptbVk)更安全。如果是为了挑战,那就去吧。但如果不是这样,我会建议更简单(且受支持)的替代方案。
-
@DiegoQueiroz 感谢您的建议。问题是它包含敏感信息。公司内部的一些人可以访问该 url,他们可以与其他人共享该 url。目标是如果他们共享它,其他人将无法看到它,因此是令牌策略。
-
但是您不能对最终用户隐藏 URL 吗?当我需要不同的仪表板权限时,我经常做的是复制它。这样,您可以与您的用户共享具有限制权限的副本。并且具有开放权限的版本(但仍然需要链接),您可以嵌入到您的应用程序中并保持 URL 隐藏。您的令牌策略的问题在于 Google 身份验证应该是交互式的。
-
@DiegoQueiroz 创建重复的仪表板意味着双重工作,由于仪表板经常更新,这会适得其反。 google 身份验证不应该是交互式的,事实上,有一个特定的流程,称为服务器到服务器授权,在 Google Workspace 帐户中非常有用。目前,我们正在研究 Data Studio 之外的解决方案。谢谢你的建议,很亲切!
-
我会将其中一份报告称为主报告并仅对其进行更改。每次更改时,我都会复制它并删除前一个。显然,这不是一个优雅的解决方案,但它确实有效。
标签: google-api google-authentication google-data-studio