您指定的签名指纹已被其他Android OAuth2客户端使用

时间:2014-06-11 09:59:48

标签: android google-api google-plus google-oauth oauth2client

前段时间我在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已删除,但我仍然遇到与上述相同的错误。

那么我是否有可能在另一个项目中将此指纹用于相同的包名称?

9 个答案:

答案 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指纹和程序包名称,它对我有用。

enter image description here

答案 7 :(得分:0)

已经晚了,但值得。我犯了同样的错误。我使用错误的帐户向Firebase添加了一个项目,然后删除并尝试添加另一个Firebase帐户,但我无法执行此操作,因为该错误表明该项目已注册。因此完全删除大约需要5到7天的时间。

这是我要生成另一个sha1的步骤。

  
      
  1. 在我的PC中转到.android。 C:\ Users \ shahz.android。
  2.   
  3. 删除debug.keystore。
  4.   
  5. 重建android项目。
  6.   
  7. 单击签名报告(右侧栏单击gradle,   app / task / android / siginingReport)

  8.   
  9. 您将获得带有新sha1的新调试密钥。

  10.   
  11. 注册您的应用。

  12.   

答案 8 :(得分:0)

有时是因为您已将应用程序与 API Google Cloud Platform 项目链接,例如 Google Signin 。因此,firebase显示了OAUTH2问题。一次您可以通过firebase或gcp使用Auth服务。

可能的解决方案:尝试删除 Google云平台或在 Android Studio 中创建新的Android项目。