【问题标题】:call GAPPS script service from AppEngine as authenticated user以经过身份验证的用户身份从 App Engine 调用 APPS 脚本服务
【发布时间】:2013-06-17 21:45:08
【问题描述】:

我已经通过 Google Appsscript 实现了模板/文档生成(至少是概念证明)。我可以将此 GAPSS 脚本发布为 Web 服务,并且可以从 GAE 调用 give service。

这已经是可行的了:

  • 采用文件 ID(模板)并将字段/值合并为参数的 GAPPS 脚本
  • GAPPS 脚本将模板复制到新文件(=结果文件)并执行合并(基本上增强了查找/替换)。
  • 发布脚本网络服务
  • 从 appengine 调用它

问题在于 GAE 应用程序已对 Google 或 Google Apps 用户进行身份验证,并且模板只能由代表 GAE 调用脚本的用户访问。生成的合并文件也必须写回给定用户的驱动器。因此,脚本应该以经过 GAE 身份验证的用户身份运行。

我知道有范围

https://www.googleapis.com/auth/drive.scripts

这允许我将脚本安装到 Google 的驱动器中?还是?

主要问题是这里应该遵循什么策略:

  • 我是否保留某个服务帐户拥有的脚本?
  • 我是否应该将脚本复制给每个应用程序用户(问题:保持版本更新,防止最终用户修改脚本等)
  • 我能否对脚本进行身份验证,以便脚本可以作为发出请求的同一 GAE 用户执行?也许使用 API 控制台中的“浏览器应用程序密钥”?
  • 也许我应该调用客户端(从 web 应用程序?)然后做相反的事情.. GAS 脚本调用 GAE 以获取说明,身份验证问题已经解决了......但是我必须将模板流式传输到GAS 脚本?
  • 或者我应该查看https://developers.google.com/accounts/docs/CrossClientAuth,这适用于这种情况吗?
  • 另一个要考虑的选项是 AppsScript 中的 UrlFetch/OAuthConfig,但这让我没有 DocsList 和 DocumentService 的便利

选项太多...最好的策略是什么?

【问题讨论】:

    标签: google-app-engine google-apps-script google-drive-api google-oauth


    【解决方案1】:

    目前没有很好的方法来调用具有 OAuth 凭据的 Google Apps 脚本部署的 Web 应用程序。您应该在Issue Tracker

    记录该请求

    Google Apps 脚本网络应用程序在用户首次访问网络应用程序时获得授权。执行此操作的最简单方法是在您的 App Engine 呈现 HTML 中链接到 Apps Script Web 应用程序。用户可以单击该链接并授权(在浏览器中建立正确的 cookie),以便可以在键盘上以用户身份运行脚本。

    看看这个example(你可以通过查看源代码看到客户端JS代码)。 “开始共享消息”启动 Apps 脚本身份验证工作流程。

    希望这有助于您设想如何布局您的应用。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2016-01-17
    相关资源
    最近更新 更多