Javascript 调用需要AJAX授权的Google应用程序脚本
我需要访问AJAX中的Google Apps脚本,该脚本需要用户授权才能从他的GMail帐户发送电子邮件。 出于各种原因,我不得不从谷歌应用程序脚本发送这封电子邮件 该调用是从服务器上托管的web应用程序发出的。我也在使用谷歌登录+认证。 我试图在my web app授权范围中包含gmail,但这是不够的,因为我的web app和我的Google Apps脚本不是Google的同一实体(不是相同的客户端id) 我希望整个过程如下所示:Javascript 调用需要AJAX授权的Google应用程序脚本,javascript,ajax,google-apps-script,oauth-2.0,google-oauth,Javascript,Ajax,Google Apps Script,Oauth 2.0,Google Oauth,我需要访问AJAX中的Google Apps脚本,该脚本需要用户授权才能从他的GMail帐户发送电子邮件。 出于各种原因,我不得不从谷歌应用程序脚本发送这封电子邮件 该调用是从服务器上托管的web应用程序发出的。我也在使用谷歌登录+认证。 我试图在my web app授权范围中包含gmail,但这是不够的,因为我的web app和我的Google Apps脚本不是Google的同一实体(不是相同的客户端id) 我希望整个过程如下所示: 用户通过其Google帐户在我的web应用程序上进行身份验证
我被困于此,非常感谢任何帮助 您的选择都不可能。您不能以任何方式绕过该授权屏幕。
使用相同的clientid或scopes对您没有帮助,最多只能授权您的帐户而不是用户帐户。每个用户都是一个独立的oauth流,其令牌由应用程序脚本保存。
然而
如果必须这样做,现在可以用不同的方式来做,因为:
1) apps脚本现在支持(自2014年2月起)实现您自己的oauth2流。
请参阅StateTokenBuilder/ScriptApp.getOAuthToken()/ScriptApp.newStateToken() 2) 谷歌现在提供oauth2 gmail api(几天前在谷歌I/O 2014上发布)
有了这两个,您可以编写自己的代码,使用自己的控制台项目等发送电子邮件。好的,谢谢您的回答。我不能像为我的Web应用配置一样配置由Google Apps脚本生成的弹出窗口吗?我注意到在HTML代码中GAS将客户端id与我的脚本相关联。但是,在开发人员控制台中,没有为我的脚本创建客户端ID。具体来说,我想将重定向uri更改为“postmessage”,以便在用户授予访问权限后弹出窗口关闭,但如果这样做,我会得到一个no_registered_原点。不,目前无法访问该控制台,它隐藏的最新答案描述了另一种方式。因此我认为我用我手动创建的客户端id授予GAS的访问权限根本没有被考虑在内,但是,当我在新选项卡中直接进入脚本页面时,提示不会要求我访问profile&gmail,只要求“离线访问”。这意味着,如果我能让用户在我的web应用程序上授予访问权限,这几乎是可行的。但是,无论我将
访问类型
更改为联机
,还是脱机
,结果都是一样的。你知道这件事吗?这是正常行为吗?酷,我不知道有可能进入控制台项目。不过,ajax不可能做到这一点,您需要为用户提供一个扭结,以便第一次单击并执行oauth流。阿贾克斯不能那样做