前段时间我在Google API控制台中为Android应用程序创建了一个带有Oauth2 client id
的示例项目(让我们称之为“示例项目”)。我还添加了SHA1 fingerprint
和包名称(例如com.package.name)。
我的错误是已经存在具有相同包名的应用程序。现在我需要在“有效项目”中为android应用程序创建一个Oauth2 client id
,其中包名为com.package.name
,而我之前添加的是SHA1 fingerprint
。显然,当我尝试添加此指纹时,我收到了错误。
The signing fingerprint you specified is already used by another Android OAuth2 client.
之后我记得“示例项目”并从此项目中删除了client id
。问题是我仍然无法为包名com.package.name
添加此指纹。 Client id
已删除,但我仍然遇到与上述相同的错误。
那么我是否有可能在另一个项目中将此指纹用于相同的包名称?
答案 0 :(得分:21)
如果Google Developers上的现有SIGNING CERTIFICATE FINGERPRINT (SHA1)
链接到其他帐户,则会发生此错误。
解决方案是删除在SHA1
中使用console.developers.google.com
项目的旧项目/错误项目。
设置后,您无法更改SHA1指纹。 请记住,删除项目需要7天才能完全删除它。
另一种选择是删除debug.keystore
并生成一个新的:
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey
-storepass android -keypass android -keyalg RSA -validity 14000
请记住,您必须卸载该应用,否则会出现[INSTALL_FAILED_UPDATE_INCOMPATIBLE]
错误。
答案 1 :(得分:2)
如果您像我一样使用每个env的每个firebase项目,则以下方法可能会有所帮助。
在构建gradle中,为每个env创建新的应用程序ID:
productFlavors {
dev {
applicationId "se.abc.dev"
}
stag {
applicationId "se.abc.stag"
}
prod
}
在每个firebase项目中,使用相同的指纹添加具有相应应用程序ID的新项目。请记住,因为应用程序ID已更改,所以请下载新的google服务json文件。包名称保持不变,因此上传到Google Play时不会出现问题。但是可以肯定的是,我将prod的味道留空了,所以包装名称和应用程序ID对于prod释放是相同的,以避免麻烦。
答案 2 :(得分:1)
由于许多原因,有人可能希望通过两个或多个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暂存项目中,这样您就可以将相同的"com.mydomain.myapp"
SHA1 添加到此应用程序中,因为它有不同的应用程序ID。
答案 3 :(得分:1)
我也遇到过同样的问题,它的解决方法很简单
转到Console.developer,您将看到使用此软件包创建的一些自动生成的密钥。删除该程序包,然后再次添加sha键。希望你能成功。跟随这个链接 https://console.developers.google.com/apis/credentials?
答案 4 :(得分:0)
今天遇到这个问题。由于项目需要很长时间才能完全删除,所以最简单的方法是通过简单地删除本地 debug.keystore 来创建新的SHA1。删除任何应用后,它会自动生成。这已记录在Android文档here中。
答案 5 :(得分:0)
我会注意到,如果您的应用在Play商店中列出,则您可能不想更改软件包名称,并且可能不想替换生产密钥(因为您将不得不进行新的列表)。
如果您完全确定当前没有使用当前程序包名称/指纹对的活动项目,请尝试做最后一件事:获取全新的凭据。必须替换应用程序中的凭据文件。
我没想到这会有所帮助,但确实有帮助。也许Google正在某种程度上缓存查询? “此packagename / fingerprint / clientID查找是重复的,因此不必费心再次查找它。”
答案 6 :(得分:0)
您指定的签名指纹已被另一个使用 Android OAuth2客户端
我必须检查每个项目,并尝试找到配置有我尝试配置的SHA1指纹和程序包名称的另一个客户端ID,但未成功。
最后,解决方案是删除我尝试编辑的客户端ID,然后再次添加SHA1指纹和程序包名称,它对我有用。
答案 7 :(得分:0)
已经晚了,但值得。我犯了同样的错误。我使用错误的帐户向Firebase添加了一个项目,然后删除并尝试添加另一个Firebase帐户,但我无法执行此操作,因为该错误表明该项目已注册。因此完全删除大约需要5到7天的时间。
这是我要生成另一个sha1的步骤。
- 在我的PC中转到.android。 C:\ Users \ shahz.android。
- 删除debug.keystore。
- 重建android项目。
单击签名报告(右侧栏单击gradle, app / task / android / siginingReport)
您将获得带有新sha1的新调试密钥。
注册您的应用。
答案 8 :(得分:0)
有时是因为您已将应用程序与 API 的 Google Cloud Platform 项目链接,例如 Google Signin 。因此,firebase显示了OAUTH2问题。一次您可以通过firebase或gcp使用Auth服务。
可能的解决方案:尝试删除 Google云平台或在 Android Studio 中创建新的Android项目。