我正在开发一个Google Apps脚本项目(可以绑定到电子表格或独立),它将部署为webapp,我想授予用户访问权限
1)Google登录
我发现它比我想象的更棘手。我期望存在一些简单的功能/方法,可以使它像Google一样保证安全级别。我首先发现的是:https://developers.google.com/identity/sign-in/web/。首先它看起来非常简单,所以我试图实现这个代码:https://developers.google.com/identity/sign-in/web/build-button,但是我在填充content="YOUR_CLIENT_ID.apps.googleusercontent.com"
后陷入困境。我从CLIENT_ID
部分Google Cloud Platform
填写了适当的Credentials
,并试图登录我已发布的项目。我懂了:
错误:redirect_uri_mismatch
请求中的JavaScript源https://n-__________________________________-script.googleusercontent.com与授权给OAuth客户端的JavaScript不匹配。访问https://console.developers.google.com/apis/credentials/oauthclient/___________.apps.googleusercontent.com?project=_____以更新授权的JavaScript源。
所以我复制了第一个链接,然后我把googleuser.com
to Authorized domains
and然后我将链接粘贴到Authorized JavaScript origins
。但我不允许保存它,这突然出现:
错误
您无权执行此操作。
追踪号码:c411401060
我不知道为什么。几个月前,类似的东西不成问题。我想这与谷歌新的限制范围政策有关。我试图使它适用于绑定和独立项目,结果没有区别。所以最后(部分是因为这个架构:https://developers.google.com/identity/sign-in/web/server-side-flow
)我得出的结论是,网站登录的整个概念并不打算用于已发布的Apps脚本项目。
a)我错了吗?如果没有,我怎么能让它工作呢?
b)为什么我得到错误 - 跟踪号码:c411401060?有人知道吗?
所以我继续在其他地方寻找解决方案。我发现的最相似的问题是Google app script web app, how to create a login button?。但它已经超过三年了,并没有非常令人满意的答案(或者我不理解它们):
c)我是否真的必须同时发布多个项目才能为某些用户授予访问权限,而对于某些用户而言没有Google帐户?用户登录后,如何注销?有没有一种简单的方法来如何可靠地检查用户ID或Gmail?
d)有人有代码的工作示例吗?作为一个初学者,我非常喜欢这个例子,因为我敢打赌,如果有一个简单的解决方案,我已经读过它,但我没有注意到它是我需要的。
2)用户名/密码
虽然十年了,但我发现阅读这个The definitive guide to form-based website authentication很有用。或者至少我不知道更好的文章从哪里开始。链接赞赏。
我对如何进行用户名/密码登录的想法是,我将通过google.script.run
创建一个由用户调用的服务器端函数,该函数将检查用户名和密码的有效性。 a)安全吗?现在,当用户登录时,我可以让webapp工作吗?我的意思是用户发送了用户名和密码,因此应用程序只会继续使用而不涉及其他技术? b)或者如果我在登录后让一些服务器端函数生成一个随机字符串,它将被发送到客户端并作为会话的令牌,我会使应用程序更安全吗?
最佳实践,提示,代码,来源赞赏!
谢谢
可能是我可以给你第一个问题的答案。
1)Google登录。在开始之前添加此Google Oauth2 link
1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
这将解决一些登录问题
除了云控制台中的默认Apps脚本ID之外,您还需要添加新的OAuth 2.0客户端ID,还应该从API控制台启用所需的API。
在App Script IF中你可以添加这个url qazxsw poi
在授权回调网址下
在新创建的oauth客户端之后,您可以将此脚本应用程序URL添加为重定向URL
https://script.google.com/oauthcallback
复制后,将新创建的Oauth的客户端ID和客户端密钥粘贴到项目中。