Javascript 为什么可以';我用谷歌应用程序脚本将其他用户的OAuth数据输入我的谷歌工作表

Javascript 为什么可以';我用谷歌应用程序脚本将其他用户的OAuth数据输入我的谷歌工作表,javascript,google-apps-script,oauth,google-api,google-plus-signin,Javascript,Google Apps Script,Oauth,Google Api,Google Plus Signin,我现在要做的就是让最终用户通过Oauth授权查看电子邮件地址,并让脚本将该电子邮件地址放入我的电子表格中 在测试中,这非常有效。点击按钮,交换代币,制作魔术,使用我的帐户时一切如期进行,但当我使用另一个帐户发布和测试时,我得到: 状态令牌无效或已过期。请再试一次 当我改变 “以“我”的身份执行应用程序” 到 “以用户访问web应用的身份执行应用” …第二个测试帐户有效,但我没有得到任何结果(显然)。 这让我觉得我在跨帐户交换数据方面遇到了一些限制,但这似乎并不正确。这似乎是一个很正常的尝试。也许

我现在要做的就是让最终用户通过Oauth授权查看电子邮件地址,并让脚本将该电子邮件地址放入我的电子表格中

在测试中,这非常有效。点击按钮,交换代币,制作魔术,使用我的帐户时一切如期进行,但当我使用另一个帐户发布和测试时,我得到:

状态令牌无效或已过期。请再试一次

当我改变

“以“我”的身份执行应用程序”

“以用户访问web应用的身份执行应用”

…第二个测试帐户有效,但我没有得到任何结果(显然)。 这让我觉得我在跨帐户交换数据方面遇到了一些限制,但这似乎并不正确。这似乎是一个很正常的尝试。也许我错了

我很乐意编辑这个问题并分享任何需要的代码,但我基本上是直接使用代码的

我想我主要是问我是否能做我想做的事


请帮助

其他帐户是否有权访问电子表格?由于这是一个web应用程序,您需要使用openById()或OpenByUrl()来指定电子表格,并且在web表单上运行脚本的用户还必须具有电子表格的编辑权限,因为它与用户打开电子表格并尝试编辑的权限相同。如果您使用“以我的身份执行”,那么用户将作为您的帐户运行脚本,显然它将尝试使用您的令牌,而不是该用户。目前,它没有连接到电子表格。它只是尝试Logger.log电子邮件(为电子表格做准备)。我不希望他们为了安全而访问电子表格,所以我以“我”的身份运行应用程序。我希望他们提供电子邮件,这就是为什么我要求他们向oauth授权。如果我不能做到这一点,那么为什么谷歌要为谷歌应用程序脚本制作oauth呢?GAS中的“高级谷歌服务”要求权限,但不允许一个帐户访问另一个帐户的信息,因此,如果不是针对这种情况,为什么要创建一个单独的oauth呢?我肯定我只是缺少了一些显而易见的知识,所以谢谢你的帮助!检查这个和这个,如果它能帮助你。此问题还会得到相同的错误“状态令牌无效或已过期”。所以也许它能给你一个解决这个问题的方法。我读过这些,还有很多其他的。我遇到的问题似乎有所不同,因为它确实可以工作,但部署到最终用户时就不行了。代码似乎是对的,我的实现肯定有问题@Vytautas似乎最接近于它为其他用户使用我的令牌,但是,我如何让它为每个用户使用每个用户令牌呢?请参阅GitHub问题和。其他帐户是否有权访问电子表格?由于这是一个web应用程序,您需要使用openById()或OpenByUrl()来指定电子表格,并且在web表单上运行脚本的用户还必须具有电子表格的编辑权限,因为它与用户打开电子表格并尝试编辑的权限相同。如果您使用“以我的身份执行”,那么用户将作为您的帐户运行脚本,显然它将尝试使用您的令牌,而不是该用户。目前,它没有连接到电子表格。它只是尝试Logger.log电子邮件(为电子表格做准备)。我不希望他们为了安全而访问电子表格,所以我以“我”的身份运行应用程序。我希望他们提供电子邮件,这就是为什么我要求他们向oauth授权。如果我不能做到这一点,那么为什么谷歌要为谷歌应用程序脚本制作oauth呢?GAS中的“高级谷歌服务”要求权限,但不允许一个帐户访问另一个帐户的信息,因此,如果不是针对这种情况,为什么要创建一个单独的oauth呢?我肯定我只是缺少了一些显而易见的知识,所以谢谢你的帮助!检查这个和这个,如果它能帮助你。此问题还会得到相同的错误“状态令牌无效或已过期”。所以也许它能给你一个解决这个问题的方法。我读过这些,还有很多其他的。我遇到的问题似乎有所不同,因为它确实可以工作,但部署到最终用户时就不行了。代码似乎是对的,我的实现肯定有问题@Vytautas似乎最接近于它为其他用户使用我的令牌,但是,我如何让它为每个用户使用每个用户令牌呢?请参阅GitHub问题和解决方案。