Android:如何使用GoogleAuthUtils从第三方模块获取ID_令牌?

Android:如何使用GoogleAuthUtils从第三方模块获取ID_令牌?,android,sdk,google-authentication,Android,Sdk,Google Authentication,因此,我正在构建一个Android模块,它将作为Gradle依赖项(或AAR包)提供给Android应用程序。就像Mixpanel一样,Google Analytics提供了与他们的服务交互的模块,我们将提供我们服务的SDK,以便与我们的服务轻松交互 我将把我们的模块称为SDK,并将其作为父应用包含在其中 为了增强用户体验,我们希望获取使用父应用程序的用户的ID_令牌。但是获取ID_令牌需要在cloud.google.com中使用构建密钥的SHA1签名和包的名称创建客户端ID 当有人将我们的SD

因此,我正在构建一个Android模块,它将作为Gradle依赖项(或AAR包)提供给Android应用程序。就像Mixpanel一样,Google Analytics提供了与他们的服务交互的模块,我们将提供我们服务的SDK,以便与我们的服务轻松交互

我将把我们的模块称为SDK,并将其作为父应用包含在其中

为了增强用户体验,我们希望获取使用父应用程序的用户的ID_令牌。但是获取ID_令牌需要在cloud.google.com中使用构建密钥的SHA1签名和包的名称创建客户端ID

当有人将我们的SDK包含在他们的应用程序(父应用程序)中时,我们无法知道他们的构建密钥的SHA1签名是什么,以及他们的包的名称是什么

我想知道我们如何才能做到这一点。或者一个更好的问题:这是不是只有在我们自己的应用程序中提问才能做到


谢谢。

我想您指的是谷歌账户的ID令牌(即使用谷歌登录)

首先,GoogleAuthUtil.getToken是检索ID令牌的传统方式,它不会给您最佳的用户体验。有关详细信息,请查看此博客帖子:

您应该在API中使用Auth.GOOGLE\u SIGN\u来检索ID令牌:

其次,如果是“父应用程序”请求令牌,则该应用程序的标识将是谷歌OAuth后端的“父应用程序”,您是对的,您无法将令牌检索伪装为您的应用程序。(如果你可以伪装成一个应用程序,这是没有意义的。假设你将SDK分发给100个应用程序,向应用程序1授予OAuth授权的用户不应该让应用程序2自动获得授权)

但只要你:

  • 请您的SDK消费者向Google注册:
  • 请他们与您共享其“Web”的注册客户端ID “应用程序”类型,您可以帮助他们生成您的配置文件 SDK能够读取
  • 在Android SDK/模块中,您读取配置文件,并在GoogleSignInOptions.Builder.requestIdToken(来自配置文件的客户端id)时使用客户端id
  • 在您的服务器上,请确保检查ID令牌的“访问者”是否为 注册的客户端ID
  • 那么它应该会起作用


    希望有帮助。

    我想您指的是谷歌账户的ID令牌(即使用谷歌登录)

    首先,GoogleAuthUtil.getToken是检索ID令牌的传统方式,它不会给您最佳的用户体验。有关详细信息,请查看此博客帖子:

    您应该在API中使用Auth.GOOGLE\u SIGN\u来检索ID令牌:

    其次,如果是“父应用程序”请求令牌,则该应用程序的标识将是谷歌OAuth后端的“父应用程序”,您是对的,您无法将令牌检索伪装为您的应用程序。(如果你可以伪装成一个应用程序,这是没有意义的。假设你将SDK分发给100个应用程序,向应用程序1授予OAuth授权的用户不应该让应用程序2自动获得授权)

    但只要你:

  • 请您的SDK消费者向Google注册:
  • 请他们与您共享其“Web”的注册客户端ID “应用程序”类型,您可以帮助他们生成您的配置文件 SDK能够读取
  • 在Android SDK/模块中,您读取配置文件,并在GoogleSignInOptions.Builder.requestIdToken(来自配置文件的客户端id)时使用客户端id
  • 在您的服务器上,请确保检查ID令牌的“访问者”是否为 注册的客户端ID
  • 那么它应该会起作用


    希望有帮助。

    谢谢伊莎贝拉!就连我也浏览了关于Android新登录API的最新博文。我们在5月16日面对这个问题,而博客帖子是在5月17日发布的。但我们一看完这篇博文,就实施了与您刚才介绍的完全相同的解决方案。将您的答案标记为已接受。:)谢谢,谢谢伊莎贝拉!就连我也浏览了关于Android新登录API的最新博文。我们在5月16日面对这个问题,而博客帖子是在5月17日发布的。但我们一看完这篇博文,就实施了与您刚才介绍的完全相同的解决方案。将您的答案标记为已接受。:)谢谢