我们的应用需要访问与Gsuite帐户相关的所有Gmail邮箱。我可以按照https://developers.google.com/admin-sdk/reports/v1/guides/delegation的说明完成此操作。即,手动创建服务帐户密钥,在凭据上启用域范围委派,并在G Suite Admin区域中手动分配适当的权限。这在为每个客户手动设置时似乎都有效,但是,这个过程既复杂又繁琐,是采用的障碍。
为了实现单击注册过程,根据G Suite市场的要求,我创建了一个OAuth客户端ID(而不是服务帐户),并使用此凭据通过同意过程重定向用户作为注册过程。此后,使用刷新/访问凭据访问G Suite API。这非常有效,除了我只能访问登录用户的邮箱(不是域中的任何其他人)。域范围委派似乎不具有客户端ID凭据。
我确实意识到服务帐户凭据具有客户端ID,但它们不允许指定可接受的重定向URI。因此,使用服务帐户似乎无法实现同意过程。
我的应用已在Chrome商店注册。如何创建凭证,使用同意过程接受权限,并仍然享有域范围授权的好处?
答案 0 :(得分:3)
我似乎需要两张凭证。
1)Google用户身份验证 - 客户端ID凭据(使用密码)
2)Gmail API的访问权限 - 启用了委托权限的服务帐户凭据(使用私钥)
1)中的客户端ID凭证适用于代表用户进行身份验证或进行API调用(已提供同意)。但是,凭据在访问多个邮箱时不起作用。在这种情况下,需要服务帐户凭证(上面的2)。
使用服务帐户凭据时,仍需要获得用户访问特定API范围的权限。这些权限/ OAuth范围是在Google Marketplace SDK配置中指定的。
转到Google云端平台 - > API& s&服务Daskboard - >点击启用API&服务 - >在搜索框中输入Google Marketplace SDK - >选择Google Marketplace SDK - >单击管理。在“配置”选项卡中,添加所需的范围。
首次访问应用时,系统会在Google Marketplace中提示G Suite管理员以允许作用域权限。与Office 365不同,同意过程不通过同意重定向处理。最初必须从Google Marketplace中访问该应用,才能分配正确的委派权限。