您指定的签名指纹已被另一个Android OAuth2客户端使用
不久前,我在谷歌API控制台中为android应用程序创建了一个示例项目(我们称之为“示例项目”),该项目具有您指定的签名指纹已被另一个Android OAuth2客户端使用,android,google-api,google-plus,google-oauth,oauth2client,Android,Google Api,Google Plus,Google Oauth,Oauth2client,不久前,我在谷歌API控制台中为android应用程序创建了一个示例项目(我们称之为“示例项目”),该项目具有Oauth2客户端id。我还添加了SHA1指纹和包名(例如com.package.name) 我的错误是已经存在具有相同包名的应用程序。现在,我需要在“有效项目”中为android应用程序创建一个Oauth2客户端id,其包名为com.package.name,并带有我之前添加的SHA1 fingerprint。显然,当我试图添加这个指纹时,我出错了 The signing finger
Oauth2客户端id
。我还添加了SHA1指纹
和包名(例如com.package.name)
我的错误是已经存在具有相同包名的应用程序。现在,我需要在“有效项目”中为android应用程序创建一个Oauth2客户端id
,其包名为com.package.name
,并带有我之前添加的SHA1 fingerprint
。显然,当我试图添加这个指纹时,我出错了
The signing fingerprint you specified is already used by another Android OAuth2 client.
此后,我想起了“示例项目”,并从该项目中删除了客户id
。问题是我仍然无法为包名com.package.name
添加此指纹<代码>客户端id已被删除,但我仍有与上面相同的错误
那么,我是否有可能在另一个项目中对相同的包名使用此指纹?当Google开发者链接到另一个帐户上存在签名证书指纹(SHA1)时,会发生此错误 解决方案是删除使用
console.developers.google.com
中的SHA1
进行旧项目/错误项目的项目
设置SHA1指纹后,您无法更改它。
请记住,删除项目需要7天才能完全删除它
另一个选项是删除debug.keystore
,并生成一个具有以下内容的新密钥库:
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey
-storepass android -keypass android -keyalg RSA -validity 14000
请记住,您必须卸载该应用程序,否则会出现
[安装失败\u更新不兼容]
错误。当Google开发者链接到其他帐户时,会出现此错误
解决方案是删除使用console.developers.google.com
中的SHA1
进行旧项目/错误项目的项目
设置SHA1指纹后,您无法更改它。
请记住,删除项目需要7天才能完全删除它
另一个选项是删除debug.keystore
,并生成一个具有以下内容的新密钥库:
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey
-storepass android -keypass android -keyalg RSA -validity 14000
请记住,您必须卸载该应用程序,否则会出现
[安装失败\u更新不兼容]
错误。如果您像我一样为每个环境使用每个firebase项目,以下方法可能会有所帮助
在构建梯度中,为每个环境创建新的应用程序id:
productFlavors {
dev {
applicationId "se.abc.dev"
}
stag {
applicationId "se.abc.stag"
}
prod
}
在每个firebase项目上,添加一个具有相同指纹的相应应用程序id的新项目。请记住下载新的google服务json文件,因为应用程序id已更改。软件包名称保持不变,因此上传到google play时不会出现问题。但可以肯定的是,我将prod风格保留为空,因此prod发行版的包名和应用程序id将相同,以避免麻烦 如果您像我一样为每个环境使用每个firebase项目,下面的方法可能会有所帮助 在构建梯度中,为每个环境创建新的应用程序id:
productFlavors {
dev {
applicationId "se.abc.dev"
}
stag {
applicationId "se.abc.stag"
}
prod
}
在每个firebase项目上,添加一个具有相同指纹的相应应用程序id的新项目。请记住下载新的google服务json文件,因为应用程序id已更改。软件包名称保持不变,因此上传到google play时不会出现问题。但可以肯定的是,我将prod风格保留为空,因此prod发行版的包名和应用程序id将相同,以避免麻烦 由于许多原因,有人可能希望通过两个或多个firebase项目使用相同的应用程序,因此出现此错误,我在这里确实解决了此特定场景。在两个或多个不同的firebase项目(比如生产和暂存)上运行同一应用程序的最有效方法是在模块级
build.gradle
文件中添加一个构建变量(比如暂存),如下所示:
apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
defaultConfig {
applicationId "com.mydomain.myapp"
minSdkVersion 19
targetSdkVersion 27
versionCode 18
versionName "2.8"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
staging {
initWith debug
applicationIdSuffix ".staging"
versionNameSuffix = "-staging"
}
}
}
dependencies {
[...]
}
// Firebase
apply plugin: 'com.google.gms.google-services'
在构建变体staging
中,最重要的是行:
applicationIdSuffix ".staging"
这将在构建时向应用程序ID注入“.staging”后缀,以便您自动
applicationId "com.mydomain.myapp.staging"
您不需要将此应用程序(
“com.mydomain.myapp.staging”
)添加到firebase staging项目中,这样您就可以将相同的“com.mydomain.myapp”
SHA1添加到此应用程序中,因为它有一个不同的应用程序ID。因为有人可能出于多种原因希望通过两个或多个firebase项目使用同一个应用程序,所以我在这里确实解决了这个特定场景。在两个或多个不同的firebase项目(比如生产和暂存)上运行同一应用程序的最有效方法是在模块级build.gradle
文件中添加一个构建变量(比如暂存),如下所示:
apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
defaultConfig {
applicationId "com.mydomain.myapp"
minSdkVersion 19
targetSdkVersion 27
versionCode 18
versionName "2.8"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
staging {
initWith debug
applicationIdSuffix ".staging"
versionNameSuffix = "-staging"
}
}
}
dependencies {
[...]
}
// Firebase
apply plugin: 'com.google.gms.google-services'
在构建变体staging
中,最重要的是行:
applicationIdSuffix ".staging"
这将在构建时向应用程序ID注入“.staging”后缀,以便您自动
applicationId "com.mydomain.myapp.staging"
您不需要将此应用程序(
“com.mydomain.myapp.staging”
)添加到firebase staging项目中,因此您可以将相同的“com.mydomain.myapp”
SHA1添加到此应用程序中,因为它具有不同的应用程序ID。今天遇到此问题。由于项目需要很长时间才能完全删除,最简单的方法是通过简单地删除本地的debug.keystore来创建一个新的SHA1。当你删除任何应用程序后运行它时,它会自动生成。这在Android文档中有记录。今天遇到了这个问题。由于项目需要很长时间才能完全删除,最简单的方法是通过简单地删除本地的debug.keystore来创建一个新的SHA1。当你删除任何应用程序后运行它时,它会自动生成