2016-12-04 83 views
0

避免第二次“审核权限”提示我已经搜索了StackOverflow等,以解决此问题,并且有几个答案指出了我的方向(提及approval_prompt = auto不是approval_prompt = force),但没有一个适用于我的情况(据我所知)。在Google Apps脚本中,可能通过使用approval_prompt

我在www.mjpanel.com上托管的Web应用程序希望使用我自己的Google Apps脚本,但www.mjpanel.com上的Javascript调用Google Apps脚本(作为Web应用程序部署与doGet())作为Web服务。它期望Web服务调用返回各种JSON对象。

如果用户尚未授权我的应用程序,那么对Google Apps脚本Web应用程序/ Web服务的调用将不会返回JSON对象,从而导致www.mjpanel.com Javascript代码无法说出“无效的请求”(因为它不是我的代码所期望的JSON对象)。

为了防止这种情况发生,www.mjpanel.com使用gapi.auth2.init来获取它所需的权限/范围。我现在正在开发所有内容,因此,如果/当Google Apps脚本演变为使用某些东西(例如发送GMail电子邮件作为用户)时,我一直在计算要请求的范围,并将其添加到范围列表中gapi.auth2.init调用,一切都很好。用户下次使用该应用程序时,最初会提示他们添加新添加的范围,然后所有事情都会正常进行。

但是,现在有时我的一个测试用户的Web服务调用失败,因为Google Apps脚本正在返回另一个'拥有Offline Access'权限的请求。

没有任何关于我的脚本,将保证用户需要授予此权限。

当我研究时,很多东西(主要是关于在'结构'中请求OAuth2的东西与我的应用程序建立方式不同的东西)“表示它与我的请求中提交'approval_prompt = force'有关URL。

但是,我有我的应用程序设置的方式,我会使用的所有网址(除了我在查询字符串中的'自定义内容')都由Google Apps脚本规定。而且我找不到任何我使用的URL有任何approval_prompt的地方。

我找不到需要将approval_prompt配置为auto的位置(正如我找到的'成功答案'中所建议的那样)。

如果approval_prompt的想法是'错误的轨道',任何信息一般来帮助我解决这个问题将不胜感激。

在此先感谢您提供的任何帮助。

回答

0

不幸的是,Google Apps Script本机OAuth流量包括approval_prompt=force。这会导致以下情况:

  • 如果cookie存在于浏览器中且具有此应用程序的许可权,则不会显示同意屏幕。

  • 如果在浏览器中存在的cookie,但没有为这个应用程序的权限:同意屏幕将显示

  • 如果cookie不浏览器存在,并且应用程序的权限:应用程序会要求“离线访问” 。

最简单的方法是管理自己的OAuth流并使用Execution API。以下链接将带您到JavaScript快速入门。

https://developers.google.com/apps-script/guides/rest/quickstart/target-script