您指定的签名指纹已被另一个Android OAuth2客户端使用

您指定的签名指纹已被另一个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

不久前,我在谷歌API控制台中为android应用程序创建了一个示例项目(我们称之为“示例项目”),该项目具有
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。当你删除任何应用程序后运行它时,它会自动生成