所以,我正在构建一个Android模块,它将作为Gradle依赖项(或AAR包)提供给Android应用程序。例如。就像Mixpanel一样,Google Analytics提供了与其服务互动的模块,我们将提供服务的SDK以便与我们的服务轻松互动。
我会将我们的模块称为SDK,并将其作为Parent App包含在其中。
为了增强用户体验,我们希望使用父应用程序获取用户的ID_TOKEN。但是,获取ID_TOKEN涉及使用构建密钥的SHA1签名和软件包名称在cloud.google.com中创建客户端ID。
当有人将SDK包含在他们的应用程序(Parent App)中时,我们无法知道他们的构建密钥的SHA1签名是什么以及他们的包名称是什么。
我想知道如何实现这一目标。或者是一个更好的问题:只有当我们在自己的应用程序中询问时才能做到这一点吗?
谢谢你。
答案 0 :(得分:4)
我假设您指的是Google帐户的ID令牌(即使用Google登录)。
首先,GoogleAuthUtil.getToken是检索ID令牌的传统方式,它不会为您提供最佳用户体验。查看此博客文章了解详细信息: http://android-developers.blogspot.com/2016/05/improving-security-and-user-experience.html
您应该使用Auth.GOOGLE_SIGN_IN_API代替ID令牌检索: https://developers.google.com/identity/sign-in/android/backend-auth#send-the-id-token-to-your-server
其次,如果它是请求令牌的“父应用”,则应用的身份将是Google的OAuth后端的“父应用”,而你是对的,你无法将令牌检索伪装成你的应用。 (如果您可以伪装成一个单独的应用程序,那就没有意义。假设您将SDK分发给100个应用程序,用户向应用程序1提供OAuth授权不应该使应用程序2自动获得授权。)
但只要你:
然后它应该工作。
希望它有所帮助。