首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Session.getActiveUser()的随机权限/自动化错误

带有Session.getActiveUser()的随机权限/自动化错误
EN

Stack Overflow用户
提问于 2020-03-01 15:05:50
回答 1查看 127关注 0票数 0

在过去的一周里,我的谷歌应用程序脚本遇到了一个棘手的问题,我的google应用程序脚本已经运行了几年,至少有500个用户。

当我试图以这种方式获取当前用户的登录信息时:

代码语言:javascript
复制
var email_act = Session.getActiveUser().getEmail();

服务器抛出一个异常:

异常:您没有调用Session.getActiveUser的权限。必需权限:https://www.googleapis.com/auth/userinfo.email at getUserInfo(UserFunctions:46:27)

在我的示例中,有效用户与活动用户不同,但在尝试调用Session.getEffectiveUser()时也出现了同样的错误。

这是随机发生的,大约30%的调用,到目前为止,我的解决方案只是重试,直到它成功。请注意,当我在后端代码中进行重试时,它没有解决问题,可能是因为“会话”本身有问题。如果它失败了一次,它也失败了所有的后续调用。因此,我在前端代码中实现了retry-循环(假设每个对后端的调用都被认为是一个新会话),并且在几次(最坏的情况5)重试之后,这起了作用。后端现在有一个简单的尝试捕获错误处理程序,它在发生故障时将状态(-1)返回给FE。

有什么根本原因吗?我的解决办法是太狡猾了不能忍受..。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-07-30 02:51:58

我今天也遇到了同样的错误。对我来说,Session.getActiveUser().getEmail()是在我用脚本创建的动态网页上使用code.gs中定义的函数“code.gs”进行的,如下所示:

代码语言:javascript
复制
function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename).getContent();
}

它似乎改变了这个

代码语言:javascript
复制
function include(filename) {
  return HtmlService.createTemplateFromFile(filename).evaluate().getContent();
}

把事情弄清楚了。我相信,当我将代码切换到气体中的新V8引擎时,错误就开始发生了。

编辑:哎呀,它第一次起作用了,但后来失败了。因此,我不得不将Session.getActiveUser().getEmail()移动到code.gs中

代码语言:javascript
复制
function getUserEmail() {
  return Session.getActiveUser().getEmail()
}

在网页上的javascript中,我不得不使用回调:

代码语言:javascript
复制
google.script.run.withSuccessHandler(function (email) {
  document.getElementById("yourIDhere").innerHTML = email;
}).getUserEmail();

一点也不漂亮,但它现在已经可靠地工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60476462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档