我的安卓应用使用的是GCM项目,该项目注册了应用密钥库SHA1。我在我的应用程序中使用另一个Firebase项目,该项目使用不同的SHA1。现在我想在我的应用程序中整合谷歌签到,这需要SHA1来为我的应用程序注册谷歌签到。我不想为此从GCM项目中删除我的SHA1。我怎样才能导入另一个Firebase项目,使它不再需要我的SHA1密钥。
谷歌签到组件要在安卓系统上工作,它需要一个SHA-1(用于签署APK的密钥的指纹)和软件包名称(如com.foo.bar)来为应用程序注册。 .这种组合允许Google Sign-In知道某个特定的应用程序正在使用哪个Google API项目。 一对给定的SHA1和包名在谷歌(和Firebase项目)中是全球唯一的。 因此,如果你试图在升级后的Firebase项目中添加相同的SHA-1对和包名,你会得到一个错误,即OAuth2客户端已经存在(在Google API项目中)。 见图片
警告。 如果你看到这个,不要删除你现有的客户ID,因为 生产中的应用程序 ! 正确的选择是在Firebase控制台为升级的应用程序创建一个与 在Firebase控制台中为升级后的项目创建一个与你的包名相同的新应用。 项目,但不要包括SHA1 . Now implement 谷歌登录 使用Firebase Auth 像平常一样。在某一点上,你将不得不 配置你的谷歌签名选项对象。
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail() .build()。
这里的default_web_client_id字符串是用来设置ID令牌的受众字段的。这个值来自google-services.json文件,它来自Firebase项目而不是Google项目。你需要用Google项目的客户端ID来替换它。你可以使用任何网络客户端ID,或者创建一个新的。 见图片
Next, back in the Firebase project, whitelist the client ID you just set for the GoogleSignInOptions in the Auth > Sign In Providers > Google section of the Firebase console. 查看图片
请确保重新下载你的google-services.json并将其添加到你的Android应用中。在这一点上,你的Firebase项目将接受由你的Google项目生成的Google ID令牌--所以你的Android应用会很高兴地使用Google项目登录到Google,然后使用Google ID令牌与你的Firebase项目进行验证,按照 正常方法 .你将能够对与Google API项目相关的Google API进行认证调用,并使用Firebase项目对Firebase API进行认证调用。