1

我正在尝试实现一个 Google Apps 脚本网络服务,该服务要求用户使用我们系统上设置的帐户登录。

用户不一定有 gmail 帐户,也不应该被要求创建一个。

Web 服务必须以脚本所有者身份运行,因为它必须能够写入电子表格和其他没有共享写入权限的资源。

我已经设法实现了登录屏幕,具有相当强的安全性——但我现在遇到的问题是用户每次访问时都必须重新登录,即使他们点击了刷新按钮。

关于如何实现这一点的任何想法?有没有办法在用户浏览器中存储一个包含会话 ID 的 cookie?还是有其他方法可以奏效?

提前致谢!

乔什

4

2 回答 2

1

这是一个非常古老的帖子,但由于有解决方案,我认为最好展示它以帮助有类似需求的人

嗨乔希,

我已经开发了这样一个系统,并且确实有办法做到这一点。

您确实可以开发一个使用 PrivateCache 类的类似 cookie 的系统:CacheService.getPrivateCache()。

如果用户重新加载页面或关闭它,它会起作用。

但是,当您关闭浏览器时,使用此解决方案将无法再检索信息。

这是我用来防止您强调的问题的功能

随意调整它们

function getCookie(){
  var cache=CacheService.getPrivateCache();
  var cached=cache.get("UserCookie");
  if(cached!=null){
    return Utilities.jsonParse(cached);
  }
  return -1;
}

function createCookie(data){
  var cache=CacheService.getPrivateCache();
  cache.put("UserCookie",Utilities.jsonStringify(data),1800); 
}

function removeCookie(){
  var cache=CacheService.getPrivateCache();
  cache.remove("UserCookie"); 
}

另一种方法是使用 UserProperties。在这种情况下,即使您关闭浏览器,它也能正常工作......我刚刚尝试过

因此,要使用的功能是:

function getCookie(){
  var cached=UserProperties.getProperty('UserCookie');
  if(cached!=null){
    return Utilities.jsonParse(cached);
  }
  return -1;
}

function createCookie(data){
    UserProperties.setProperty('UserCookie',Utilities.jsonStringify(data));
}

function removeCookie(){
  UserProperties.deleteProperty("UserCookie"); 
}

我希望它会帮助任何人......

干杯

尼古拉斯

于 2013-06-08T23:36:00.693 回答
0

Apps 脚本无法进行持久登录,因为 Apps 脚本无法与 cookie 等浏览器对象交互。Apps 脚本仅适用于 Google 帐户。

于 2012-10-31T13:19:39.947 回答