Google api 如何在没有用户干预的情况下执行G套件域范围的授权?

Google api 如何在没有用户干预的情况下执行G套件域范围的授权?,google-api,google-apps,google-authentication,google-workspace,Google Api,Google Apps,Google Authentication,Google Workspace,我们的应用程序要求访问与Gsuite帐户相关的所有Gmail邮箱。我可以通过遵循上的说明来完成这一点。i、 e.手动创建服务帐户密钥,在凭据上启用域范围的委派,并在G套件管理区域手动分配适当的权限。当为我们的每个客户手动设置时,这似乎是可行的,但是,该过程复杂且繁琐,并且是采用的障碍 为了实现一键注册过程,根据G Suite marketplace的要求,我创建了一个OAuth客户端ID(与服务帐户相反),并使用此凭据通过同意过程重定向用户,作为注册过程的一部分。此后,使用刷新/访问凭据访问G套

我们的应用程序要求访问与Gsuite帐户相关的所有Gmail邮箱。我可以通过遵循上的说明来完成这一点。i、 e.手动创建服务帐户密钥,在凭据上启用域范围的委派,并在G套件管理区域手动分配适当的权限。当为我们的每个客户手动设置时,这似乎是可行的,但是,该过程复杂且繁琐,并且是采用的障碍

为了实现一键注册过程,根据G Suite marketplace的要求,我创建了一个OAuth客户端ID(与服务帐户相反),并使用此凭据通过同意过程重定向用户,作为注册过程的一部分。此后,使用刷新/访问凭据访问G套件API。这非常有效,除了我只能访问登录用户的邮箱(而不是域中的任何其他人)。域范围的委派似乎不可与客户端ID凭据一起使用

我知道服务帐户凭据有一个客户端ID,但它们不允许指定可接受的重定向URI。因此,使用服务帐户似乎不可能实现同意过程


我的应用程序已在Chrome应用商店注册。如何创建凭据,使用同意过程接受权限,并且仍然可以享受域范围的委派的好处

看来我需要两张证件

1) Google用户身份验证-客户端ID凭据(使用机密)

2) Gmail API的访问服务帐户凭据(使用私钥)启用了代理权限

1)中的客户端ID凭据适用于代表用户进行身份验证或进行API调用(前提是获得了用户的同意)。但是,当访问多个邮箱时,凭据将不起作用。在这种情况下,需要服务帐户凭据(上面的2个)

使用服务帐户凭据时,仍然需要获得用户访问特定API作用域的权限。这些权限/OAuth范围在Google Marketplace SDK配置中指定

转到Google云平台->API和服务数据板->单击启用API和服务->在搜索框中键入Google Marketplace SDK->选择Google Marketplace SDK->单击管理。在“配置”选项卡中,添加所需的作用域


首次访问应用程序时,Google Marketplace会提示G套件管理员允许范围权限。与Office 365不同,同意流程不通过同意重定向进行处理。最初必须从Google Marketplace中访问该应用程序,才能分配正确的代理权限

Office 365使域管理员能够通过同意过程来授权对整个域的特定作用域的访问。谷歌应用程序似乎没有类似的功能。从我所看到的,似乎你必须使用服务帐户进行授权访问,谷歌应用程序管理员需要遵循一个复杂的过程来添加范围。有人能证实这一点吗?我希望是一个一键式的安装过程。你能再澄清一下吗?那么,您是否能够通过Oauth流获得G-suite管理员用户的同意来访问所有用户的邮箱,或者管理员用户是否仍然需要手动创建服务帐户并与您共享密钥?感谢您的分享。如果没有管理员的同意,我无法找到获得管理员同意的方法。请访问admin.google.com并指定我的应用程序的Id和所需的范围。据我回忆,您需要向google Apps marketplace注册您的应用程序。在注册过程中,我们重定向到GSuite Marketplace,其中有一个安装按钮。当用户单击安装按钮时,他们将完成同意过程。与Office 365流程(我更喜欢)不同,同意流程必须通过Gsuite Marketplace进行,以便应用程序有足够的权限访问与公司关联的所有邮箱。请参阅: