调用需要AJAX授权的Google Apps Script

Call a Google Apps Script that requires authorization in AJAX

本文关键字:Google Apps Script 授权 AJAX 调用      更新时间:2023-09-26

我需要在AJAX中访问Google Apps脚本,该脚本需要用户授权才能从他的GMail帐户发送电子邮件。由于种种原因,我不得不从Google Apps脚本发送这封邮件。

调用是从托管在服务器上的web应用程序发出的。我也使用谷歌登录+认证。我试图包括gmail在我的web应用程序授权范围,但这是不够的,因为我的web应用程序和我的谷歌应用程序脚本是不相同的实体谷歌(不相同的client_id)。

我希望整个事情是这样的:

  1. 用户在他的Google帐户上对我的web应用程序进行身份验证
  2. 他点击按钮发送电子邮件
  3. 如果他从未授权给我的Google Apps脚本,授权弹出显示
  4. 他授予权限,他是不是重定向到谷歌应用程序脚本结果页,但留在我的web应用程序
  5. Google Apps脚本发送电子邮件,并在JSONP中返回一些东西到我的Web应用程序。

这可能吗?

我想到了几个解决方案,但我不知道如何使它们起作用:

  1. 是否有办法设置谷歌应用程序脚本的client_id为和我的Web应用一样吗?
  2. 或者有办法创建(&自定义)按钮,这是自动生成的,当我试图访问一个谷歌应用程序脚本,我没有授予访问权限,并显示该按钮在我的web应用程序?

我被这个困住了,任何帮助都非常感谢!

你的选项都不可能。您无法以任何方式绕过该授权屏幕。
使用相同的客户端或作用域对您没有帮助,最多将授权您的帐户而不是用户帐户。每个用户都是一个独立的认证流,有自己的令牌,由app脚本保存。
然而
如果你必须这样做,现在可以用另一种方式来做,因为:
1) app脚本现在支持(自2014年2月)实现自己的oauth2流。
看到StateTokenBuilder/ScriptApp.getOAuthToken ()/ScriptApp.newStateToken ()

2) Google现在提供了一个oauth2 gmail api(几天前在Google I/O 2014上公布)

使用这两个,您可以使用自己的控制台项目等编写自己的代码来发送电子邮件。