google-apps-script - 使用多个帐户登录时如何获取用户的所有电子邮件?
问题描述
我有一所学校的谷歌网络应用程序有一个 G Suite 域,即电子邮件是@theschool.org。该应用程序连接到一个电子表格,其中包含允许访问该应用程序的电子邮件地址(学校的教师)的白名单。页面加载时,所有其他人都会收到“拒绝访问”消息。该脚本用于Session.getEffectiveUser().getEmail()
获取用户的电子邮件并将其与列表进行比较。
一些用户使用个人设备或 chromebook 登录他们的个人 gmail 帐户和学校的域帐户。一些实验表明,在这种情况下,Session.getEffectiveUser().getEmail()
总是返回首先Session.getActiveUser().getEmail()
登录的帐户的电子邮件地址,这意味着即使用户(后来)使用白名单帐户登录,也会被拒绝访问。目前,他们必须注销所有帐户,然后登录学校帐户才能获得访问权限。
我想获取用户当前登录的所有gmail 地址的列表,因此我可以检查其中是否有任何一个在白名单上,避免需要退出并重新登录。有没有办法在里面做到这一点应用脚本?
谷歌关于 User 类和 Session 类的文档没有提到关于多个帐户的任何内容。
解决方案
我想获取用户当前登录的所有 gmail 地址的列表,因此我可以检查其中是否有任何一个在白名单上,避免需要退出并重新登录。有没有办法在里面做到这一点应用脚本?
回答:
使用 Apps 脚本无法做到这一点。
解释:
Google Apps 脚本是一种基于 JaveScript、基于云的语言,它不在用户的本地计算机上运行。它无法访问本地会话中的任何信息,因此只能查看哪个用户是活动用户、登录并运行脚本。
文档中定义了唯一可通过 Apps 脚本获得的会话信息:
getActiveUser()
- 获取有关当前用户的信息。getActiveUserLocale()
- 以字符串形式获取当前用户的语言设置——例如,en 表示英语。getEffectiveUser()
- 获取有关脚本在其权限下运行的用户的信息。getScriptTimeZone()
- 获取脚本的时区。getTemporaryActiveUserKey()
- 获取活动用户唯一但不透露用户身份的临时密钥。
最后一点很重要——访问本地会话并获取用户身份信息是一个严重的隐私问题。因此,这是不可能的。
参考:
推荐阅读
- java - 如何计算这个程序的时间复杂度?(检查更大数组中的子数组)
- python - python 2 创建 h5 文件数据到 python 3
- ffmpeg - 如何在不使用 fontfile 选项的情况下在 FFMPEG 命令中包含字体?
- c++ - 使用指向向量中元素的指针是否危险?
- python - 计算列表python列表中所有向量之间的欧几里得和闵可夫斯基距离的最快方法
- javascript - 在 C# 中创建的 Node js 二进制数据中反序列化
- javascript - 如何在 PDF.js 中切换 PDF 图层的可见性
- botframework - 访问从机器人框架上传到 Azure Blob 的图像
- javascript - 如何在导出期间使用 Jspdf 在“中心”对齐 TextField 值
- java - 多对多条件不能获取所有正确数据