java - Google Marketplace App/OAuth2 - 以编程方式委托(delegate)全域授权

标签 java google-oauth google-apps-marketplace google-oauth-java-client

上下文

我目前正在将基于 OAuth 1.0/OpenId 的应用程序迁移到使用 OAuth 2.0。该应用程序是一个用 Java 构建的 Google App Engine 应用程序,将出现在新的应用程序市场 2.0 中。我的基本 OAuth 2.0 流程对于个人用户来说运行良好,但在为下面的场景设置服务帐户时遇到问题。

问题

我尝试启用的流程如下:

  1. 域管理员从应用市场安装应用
  2. 域管理员授予请求的范围(例如管理员 sdk、个人资料、电子邮件等)
  3. 新域中的用户可以登录,不会出现任何范围权限提示
  4. 当用户登录时,我的应用的服务帐户可以使用管理 sdk 访问新域的用户详细信息,以检查用户是否为管理员

为了启用#4,我的理解是我的应用程序服务帐户需要获得新用户域所请求范围的域范围授权。

Google 文档显示了域管理员如何通过管理控制台 ( https://developers.google.com/drive/web/delegation ) 手动完成此操作,但我没有找到有关如何以编程方式/自动授予对我的应用程序服务帐户的访问权限的文档。

问题

有人有这样的运气吗?或者也许有另一种/更智能的方法来检查用户是否是其域的管理员,而不必使用服务帐户+管理 SDK 组合?

提前致谢!

最佳答案

将您的应用标记为 DOMAIN_INSTALLABLE 并在附加到该应用的 API 项目中创建一个服务帐户。管理员用户将从市场安装它,这将授予您的服务帐户的域范围委派。 See the doc here .

请注意,您还需要模拟管理员用户的电子邮件才能访问 Admin SDK。您可以要求安装该应用程序的人员在设置阶段提供正确的电子邮件。您必须发布一个 Web 应用程序来执行设置,并在 Marketplace SDK 配置中提供此 Web 应用程序的 URL。

关于java - Google Marketplace App/OAuth2 - 以编程方式委托(delegate)全域授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25392897/

相关文章:

google-apps - "Integrate with Google"按钮消失

java - Maven 使用 scp 部署快照抛出 NoSuchElementException

java - 我应该显式处理 Graphics 对象吗?

Flutter Googleapis_auth 从刷新 token 中获取新的访问 token

java - Google oauth2 在 Spring Boot 中登录,刷新 token 为空,在远程服务器中失败,在本地主机中工作

google-api - 谷歌应用市场 SDK : setup a contextual gadget

java - 为什么调用具有不同类型的泛型方法会出现编译错误?

java - 按特定值分组列出数据

javascript - Google Analytics Reporting API v3 要求用户登录

asp.net - 使用 ASP.NET 创建简单的 Google 应用程序