2016-01-20 51 views
0

我在Google云端硬盘中创建了一个由Google电子表格支持的脚本,并将其发布为一个Web应用程序,将“执行应用程序为:我”和“谁有权访问该应用程序:任何人,甚至匿名”。主页面从电子表格提供html内容。Google应用脚本网络应用,如何创建登录按钮?

的基本功能是:“随机的互联网用户”能够看到一些信息,同时记录和他的谷歌帐户的用户可以提交信息,以及。

的问题是 - 如果我设置为“任何人”的人首先被重定向到标准的谷歌登录页面的权限,并且在登录后必须接受脚本的权限。完成之后,只要您使用Google帐户登录,导航到Web应用程序就会给出“登录用户”版本。

但是 - 如果Web应用程序设置为允许“匿名用户”似乎没有被任何(至少明显的方式),以允许匿名用户登录并接受应用程序的权限。

我已经试过至今:

  • 的URL谷歌的链接重定向我,如果我如果Web应用程序需要先登录用户不是在登录该作品,但我的感觉。它不是正确的方式,而且一旦登录,就无法注销或切换帐户;似乎一旦你登录,您登录永远
  • 使用https://developers.google.com/apps-script/reference/script/authorization-info#getAuthorizationUrl()得到验证网址 - 但我不知道如何使用它返回的URL(导航用户到该网页的Web应用程序框架在顶部框架都导致一个空白页)

我如何获得一个登录(和可能的交换机登录)url允许匿名用户登录我的web应用程序?

+0

@BryanP我得到它的工作将用户重定向到我得到改变脚本的权限,因此是绝对有可能的URL。我习惯了App Engine,它提供了创建登录按钮的功能,我觉得getAuthorizationUrl()是要走的路,但无法让它工作 – thedayofcondor

回答

0

2个.GS Web应用程序项目创建示例代码: one - 没有权威性,运行作为所有者,匿名可以访问 two - 需要身份验证,运行作为用户,任何人都可以访问

...我不知道你的“我得到它的工作重定向用户到URL”语句看起来像在代码中。

第一个文件有一个点击监听器来充当登录按钮一个按钮,但它只是呼吁window.top.location.href变化。 第二个应用程序使用ScriptApp.invalidateAuth();在客户端按钮单击被调用后将用户注销。

Demo - 第一web应用程序的URL

我还是会投票只是提供一个第二web应用程序作为在新窗口中打开弹出,虽然和我注意到在评论,上述强制用户设置一个链接重新授权每次和注销后。

+1

第二个想法是,'invalidateAuth()'不可能是你想要的,这比注销更远了一步。你想保持身份验证,只是注销会话或切换帐户。也许其他人可以澄清是否可以由开发人员创建帐户管理,或者是否是功能请求 –

+0

是的,当“以我身份运行”时invalidateAuth()为脚本所有者取消授权脚本,而不是用户。进一步调查和实施您的解决方案,我意识到它或者“像我一样运行”,在这种情况下,脚本可以访问受保护的电子表格或“以用户身份运行”,在这种情况下,我根本无法读取电子表格。如果我创建了两个独立的Web应用程序,似乎没有办法让他们互相交流(除了未经身份验证的Ajax调用) – thedayofcondor

+0

那么,如果你留在App Engine世界,你可以考虑使用[Execution API](https:/ /developers.google.com/apps-script/guides/rest/quickstart/js)为2个页面提供1个应用程序。 1页为您的匿名观众然后另一个触发登录。我猜''gapi.auth.signOut();'会用于注销? –

相关问题