2

我有一个由两部分组成的应用程序

  1. 在用户机器上运行的已安装应用程序(更具体地说:浏览器插件),以及
  2. 作为独立的 Google Apps 脚本应用程序实现的网络应用程序,使用HtmlService.

这两部分相互交谈,并且都通过 Oauth 代表用户访问一些 Google API。为此,我在 Google API 控制台中设置了一个 API 项目。在“API 访问”部分,我为浏览器插件创建了一个“已安装应用程序”类型的客户端。对于 Apps 脚本部分,Google 会自动处理授权流程。

我的问题是谷歌不知道这两个客户是同一个项目的一部分。因此,用户在第一次执行我的应用程序时必须连续执行两个授权步骤(首先是浏览器插件的 Oauth 过程,然后是从 Google Apps 脚本自动生成的授权过程)。这对用户来说非常令人困惑,特别是因为浏览器插件和 Web 应用程序之间的分离是一个用户不必真正关心的实现细节。

有没有办法统一两个授权流程?我知道可以将多个不同的客户端添加到 Google API 控制台中的单个项目中。在我看来,此功能似乎明确适用于与我类似的场景,其中多个应用程序构成了用户认为单一服务的内容。不幸的是,由于 Apps 脚本自动生成授权流程的方式,在 Google Apps 脚本中实现的网络应用程序似乎与 Google API 控制台不兼容。还是我在 API 控制台或 Apps 脚本编辑器中缺少一个选项?

4

1 回答 1

2

供将来参考:我发现 Google 会在 Google API 控制台中为每个 Google Apps 脚本项目自动创建一个 API 项目。这似乎是一个相当新的功能。对我来说,一个困难是这些 API 项目在进入 API 控制台时不显示,单击左上角当前打开的任何项目的名称并选择“打开”。显然,访问自动生成的 API 项目的唯一方法如下:

  1. 转到 drive.google.com 并打开 Google Apps 脚本项目。
  2. 选择“资源 --> 使用 Google API...”。
  3. 在弹出窗口中,单击指向 Google API 控制台的链接。

原则上,这应该允许向项目添加其他客户端,只要其他客户端都不是 Google Apps 脚本项目。我无法对此进行测试,因为它仍然不能解决我的具体问题:从用户的 Gmail 帐户发送电子邮件似乎是 Google Apps 脚本独有的功能,我找不到用于此的 Oauth2 范围手术。因此,我仍然无法在单个授权流程中请求所有必需的权限。但是,如果任何阅读本文的人在不同的 Oauth2 范围内有类似的问题,上述说明应该会为您解决。

无论如何,我同时通过不再使用 Google Drive 上传文件解决了我的问题。

于 2013-07-28T15:50:02.360 回答