[英]How to publish a Google Apps Script web app to the G-Suite Marketplace?
[英]Signing into custom web app with G-Suite account
我的Google Apps Script / HTMLService网络应用程序的90%可用于匿名用户,但是该用户必须使用G-Suite帐户登录才能访问其余的10%。
所需的行为是,如果用户已经登录到G-Suite(例如,从该浏览器中读取Gmail),则该Web应用程序会识别该用户,而不会提示您再次登录-就像您在阅读Gmail之后便进入了Google日历一样。 如果用户尚未登录-访问受限功能时,需要提示他使用@ my_g-suite.com帐户登录。
我的第一个尝试是两种应用程序方法:一种发布为“对所有人(包括匿名用户)可用”,另一种“对my_g-suite.com成员可用”。 这种方法的问题在于,如果浏览器没有Google身份,第二个应用程序只会显示登录屏幕。 如果用户登录到常规的非g套件gmail,则会显示奇怪的google驱动程序错误,而不是登录提示。 我前不久发布了关于此问题的解决方案。
因此,我改为使用本指南实现了登录按钮。 我看到的行为不是我所期望的:
Session.getActiveUser()
返回正确的用户ID,但是googleUser.getBasicProfile().getEmail()
客户端上的googleUser.getBasicProfile().getEmail()
没有任何内容。 googleUser.getBasicProfile().getEmail()
返回正确的用户ID,但是, Session.getActiveUser()
在服务器端不返回任何内容。 Session.getActiveUser()
表示它为UserOne@my_g-suite.com,而googleUser.getBasicProfile().getEmail()
表示它为UserTwo @ my_g -suite.com 。 两个冲突的身份同时出现。 如何使我的应用程序登录成为1)与其他G-Suite服务无缝连接,而不是完全独立的仅用于应用程序的第二身份和2)限制为@ my_g-suite.com ?
遵循@TheMaster建议,我尝试了此操作:
创建了一个Google协作平台网站“ login.my_g-suite.com”,该网站仅对g-suite用户可用,并且只有一个页面显示“您已登录g-suite”
在运行为“我”并且“所有人都可以使用,甚至匿名”的Web应用程序中,我实现了对Session.getActiveUser()
是否为g-suite用户的检查。 如果没有,我执行window.open("https://login.my_g-suite.com")
,这将按预期在新选项卡中打开登录屏幕。
用户登录后,我会重新加载Web应用程序。 这是可悲的部分:
Session.getActiveUser()
显示新登录的用户ID Session.getActiveUser()
不会知道我刚刚在另一个选项卡中登录了G-Suite(即使在重新加载Web应用程序之后)。 回到正题。 将此与Google自己的应用进行比较,此行为没有太大不同:例如,如果您阅读常规的非g-suite gmail,然后使用G-Suite帐户登录到Google云端硬盘,然后重新加载gmail-不需要您会因为登录到该浏览器上的G-Suite帐户而自动进入G-Suite Gmail。 您需要通过调用活动帐户选择菜单(右上角的圆形头像图标)明确告知Gmail您要使用G-Suite帐户。
看起来,无论采用哪种方法,我都碰到了墙:需要告诉独立的Google App脚本哪个Google身份是最新的。 而且我看不到这样做的任何方法。
由于Google最近做出的更改,我上面所说的不再正确。 (2)现在导致错误404,而不是登录屏幕。
几天前仅影响独立Google App Script应用程序的登录问题现在困扰着整个G-Suite。 我们的志愿者急救组织主要在安全的Intranet网站(members.my_g-suite.com)上获得G-Suite,我们在该网站上共享内部协议和文档。 它基于新的Google协作平台和Google Team Drive构建。 在星期三之前,尝试访问members.my_g-suite.com,以转到G-Suite登录屏幕。 现在将它们带到"404. That's an error. The requested URL / was not found on this server. That's all we know."
。 唯一的解决方法是强制每次访问G-Suite之前,用户都退出个人Gmail,对于使用个人设备的志愿者来说,这不是合理的要求。 我们感觉就像Google从我们脚下拉下了地毯。 唯一的希望是这是暂时的更改,他们会将其恢复为本周初的状态。 我们还确认,此更改不仅限于我们的G-Suite。
这是因为您的网络应用程序在iframe中运行。 您可以通过手动拒绝访问Web应用程序来强制登录。
onload
,检查Session.getActiveUser().getEmail()
服务器端,看它是否与您的域匹配,
你也可以
setInterval
检查另一个window.close属性。 关闭后,重新加载您的网络应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.