web-dev-qa-db-fra.com

L'empreinte de signature que vous avez spécifiée est déjà utilisée par un autre client Android OAuth2.

Il y a quelque temps, j'ai créé un exemple de projet (appelons-le "exemple de projet") avec Oauth2 client id pour l'application Android dans la console des API Google. J'ai également ajouté SHA1 fingerprint et le nom du package (par exemple, com.package.name). 

Mon erreur est qu'une application avec le même nom de package existait déjà. Maintenant, je dois créer un Oauth2 client id pour une application Android dans le "projet valide" avec le nom du paquetage com.package.name et avec SHA1 fingerprint que j'ai déjà ajoutés. Évidemment, lorsque j'ai essayé d'ajouter cette empreinte digitale, j'ai eu une erreur.

The signing fingerprint you specified is already used by another Android OAuth2 client.

Après cela, je me suis souvenu de "exemple de projet" et j'ai supprimé client id de ce projet. Le problème est que je ne peux toujours pas ajouter cette empreinte digitale pour le nom du paquet com.package.name. Client id est supprimé mais j'ai toujours la même erreur que ci-dessus.

Ai-je la possibilité d'utiliser cette empreinte pour le même nom de package dans un autre projet?

16
Elena

Cette erreur se produit lorsqu'il existe une SIGNING CERTIFICATE FINGERPRINT (SHA1) sur Google Developers liée à un compte différent.

La solution consiste à supprimer le projet qui utilise ce SHA1 dans console.developers.google.com pour l'ancien projet/incorrect.

Vous ne pouvez pas modifier l’empreinte SHA1 une fois celle-ci définie. N'oubliez pas que la suppression du projet prend 7 jours pour la supprimer complètement.

Une autre option consiste à supprimer le debug.keystore et à en générer un nouveau avec:

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey
-storepass Android -keypass Android -keyalg RSA -validity 14000

N'oubliez pas que vous devez désinstaller l'application, sinon vous obtenez l'erreur [INSTALL_FAILED_UPDATE_INCOMPATIBLE].

21
surfer190

Si vous utilisez chaque projet Firebase pour chaque env tel que je suis, l'approche ci-dessous peut être utile. 

Dans votre classe de construction, créez un nouvel identifiant d'application pour chaque env: 

productFlavors {
        dev {
            applicationId "se.abc.dev"
        }
        stag {
            applicationId "se.abc.stag"
        }
        prod
    }

Sur chaque projet Firebase, ajoutez un nouveau projet avec l'identifiant d'application correspondant avec la même empreinte digitale. N'oubliez pas de télécharger le nouveau fichier json du service Google, car l'identifiant de l'application a été modifié. Le nom du paquet reste le même, ce qui ne poserait aucun problème lors du téléchargement sur Google Play. Mais pour sûr, je laisse la saveur prod vide, ainsi le nom du paquet et l'id de l'application seront les mêmes pour la sortie de prod afin d'éviter tout problème. 

2
thanhbinh84

Comme quelqu'un pourrait vouloir utiliser la même application via deux ou plusieurs projets Firebase pour de nombreuses raisons et obtenir ainsi cette erreur, je traite ici de ce scénario particulier. La façon la plus simple d’exécuter la même application sur deux projets Firebase ou plus (par exemple, production et transfert) consiste à ajouter à votre fichier de niveau module build.gradle une variante de construction (disons, transfert) comme celle-ci:

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'

Dans la variante de construction staging, le plus important est la ligne:

applicationIdSuffix ".staging"

Ceci injectera au moment de la construction un suffixe ".staging" pour votre ID d’application afin que vous ayez automatiquement

applicationId "com.mydomain.myapp.staging"

Vous devez ensuite ajouter cette application ("com.mydomain.myapp.staging") à votre projet de stockage intermédiaire de Firebase afin de pouvoir ajouter le même "com.mydomain.myapp" SHA1 à cette application, car elle possède un ID d'application différent.

1
shadowsheep

Couru dans cette question aujourd'hui. Comme le projet met longtemps à être complètement supprimé, le plus simple consiste à créer un nouveau SHA1 en supprimant simplement le fichier local debug.keystore. Il est automatiquement généré lorsque vous exécutez une application après l'avoir supprimée. Ceci est documenté dans la documentation Android ici .

0
Aditya

Je noterai que si votre application est répertoriée dans le Play Store, vous ne voudrez probablement pas changer le nom du paquet et vous ne voudrez probablement pas remplacer la clé de production (vous serez obligé de créer une nouvelle inscription).

Si vous êtes absolument certain qu'aucun projet actif n'utilise actuellement la paire nom du paquet/empreinte digitale actuelle, une dernière chose à essayer: Créez de nouvelles informations d'identification. Vous devrez remplacer votre fichier d'informations d'identification dans l'application.

Je ne m'attendais pas à ce que cela aide, mais c'est ce qui s'est passé. Peut-être que Google cache en quelque sorte la recherche? "Cette recherche de nom de fichier, d'empreinte digitale ou de client est un doublon, alors ne cherchez pas plus loin."

0
Brian