从App Engine调用APPS脚本服务作为经过身份验证的用户

时间:2013-06-17 21:45:08

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

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

这已经成功了:

  • 一个GAPPS脚本,它接受文件ID(模板)并将字段/值合并为参数
  • GAPPS脚本将模板复制到新文件(=结果文件)并执行合并(基本上增强查找/替换)。
  • 发布脚本webservice
  • 从appengine调用它

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

我知道有范围

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

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

主要问题是这里要采取什么策略:

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

选择太多......什么是最佳策略?

1 个答案:

答案 0 :(得分:0)

今天没有好办法使用OAuth凭据调用Google Apps脚本部署的Web应用程序。您应该在Issue Tracker

上记录该请求

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

看看这个example(您可以通过视图源查看客户端JS代码)。 “开始共享消息”启动Apps Script auth工作流程。

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