我创建了一个GSuite Marketplace应用程序,只能通过域管理员安装,以批准其整个域所需的范围。在测试安装过程中,当我以管理员身份安装应用程序时,它会提示输入预期的范围,并按预期为每个用户安装。这是一个云集成,因此当用户转到云端硬盘时,应用会按预期显示在列表中。当我转到GSuite admin中的“管理API客户端访问”部分时,它会正确显示应用程序以及安装时批准的不同范围。到目前为止一切都很好。
当用户转到我的域上的应用程序(另一个非管理员用户或刚刚安装该应用程序的管理员用户)时,我希望我能够使用JS客户端库自动验证它们不需要他们批准任何范围,因为管理员应该在域范围内批准它们。但是,当我在客户端上运行以下代码时,它告诉我用户没有登录。
gapi.load('client:auth2', () => {
gapi.client.init({
discoveryDocs: [''https://www.googleapis.com/discovery/v1/apis/drive/v3/rest'],
clientId: //My applications client ID
scope: //Same scopes that the admin user approved during install,
})
.then(() => {
gapi.auth2.getAuthInstance().isSignedIn.get(); //false
})
调用gapi.auth2.getAuthInstance().signIn();
方法然后使用管理员批准的域范围相同的范围弹出范围批准。
我可能错过了进行域范围安装的目的,但我希望个别用户不需要重新批准范围,并且在解决上述init
承诺后,我可以访问当前登录的用户。
我在那里思考错了吗?关于这个主题的各种文档谈论了很多关于服务帐户的内容,但我不认为我需要一个我正在做的事情,因为我从来没有做过服务器服务器请求。我正在进行的所有API请求都将直接作为浏览器中的当前用户。
在运行上述代码的域可能没有正确配置或其他什么地方有什么问题吗?
我几乎在我的Marketplace应用程序和项目配置的所有各种配置设置中都进行了调整,但我仍然没有找到一种方法来使其尽可能地无缝连接。