web-dev-qa-db-fra.com

Signature de l'application Google Play - Incompatibilité des hachages clés

J'utilise la nouvelle application Google Play Signing pour signer mon application et il y a une incohérence clé-hachage.

J'ai intégré Facebook Login à mon application et le mot de passe est invalide. La version Keyhash de mon APK est différente de la version Keyhash créée par le processus de signature de Google Play App. 

EDIT: Étape j'ai fait:

1) Créé un fichier de magasin de clés jks.

2) Création d'une version apk signée avec le fichier jks.

3) Importation de l'APK dans Google Console Developer, avec l'abonnement à Google Play App Signing, qui modifie la clé signée.

4) Une fois en ligne, je télécharge et ouvre l'application, l'initialisation de Facebook dit: Hash Key invalide

Lorsque je vérifie le hashkey dans l'application via le code ci-dessous, le hash key est différent du hashkey invalide dit par Facebook:

  try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.package",
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (PackageManager.NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

Même si je mets le hashkey dit par Facebook dans le tableau de bord de Facebook, cela ne fonctionne pas. Il semble que la signature de l'application Google Play modifie la dièse pendant le processus de signature. Avez-vous une idée pour le résoudre?

7
Rocé Tarentula

J'ai eu le même problème et il semble que, comme vous le dites, le Google Play Store re-signe votre apk avec une nouvelle clé, et c'est ce que vous devez fournir à Facebook comme clé de hachage (et non celle générée avec keytool).

La seconde partie de cette réponse https://stackoverflow.com/a/44448437/2640599 est utile.

Fondamentalement, vous devez fournir à Facebook le hachage basé sur le certificat de signature de l'application SHA-1 généré par Google, au lieu d'utiliser keytool et votre clé locale (qui, semble-t-il, est uniquement utilisée pour le téléchargement sur Google).

15
mole

Vous devez utiliser la clé SHA-1 générée par Google. Les étapes suivantes permettraient de le réparer. 

1). Accédez à la console Google => Gestion des versions => Signature de l'application => Certificat de signature de l'application

2) Copiez le certificat SHA-1 à partir de là et comme il est dans hexadecimal et puisque Facebook en a besoin dans base64, utilisez donc la commande indiquée dans étape 3 

3) . echo SHA-1 clé de l'étape 2 (Hexadécimale) | xxd -r -p | openssl base64
Cette commande ne fonctionnera pas dans command Invite use bash sous windows ou git cli

4) Collez la clé base64 dans Console Facebook => Paramètres => de base => hachages de clés  

14
neer17

Vous pouvez convertir le hachage SHA-1 au format hexadécimal (comme dans Play console) en base64 en utilisant la commande suivante (sur peut-être Git Bash):

echo 33:4E:48:84:19:50:3A:1F:63:A6:0F:F6:A1:C2:31:E5:01:38:55:2E | xxd -r -p | openssl base64

Sortie:

M05IhBlQOh9jpg/2ocIx5QE4VS4=

Ce hachage peut être utilisé par exemple lors de la configuration de l'application Facebook. Source de réponse

2
Garvit Jain

Je suppose que vous utilisez peut-être la clé de hachage générée pour debug.keystore.

Étapes à suivre

1.Générez la clé hash pour le certificat de version.

Allez en ligne de commande et exécutez cette commande. Remplacez les espaces réservés dans <*..*> par les valeurs appropriées.

keytool -exportcert -alias <*provide an alias here. I recommend to use the same alias that you use for google play app signing*> -keystore _<*your path to the jks certificate*> | openssl sha1 -binary | openssl base64

Cette commande générera un hachage de clé.

2.Copiez la clé de hachage générée par la commande ci-dessus et collez-la dans la console de votre application Facebook comme ceci.   .

3.Sign le apk avec vos jks. Téléchargez et installez sur votre téléphone pour tester.

Essayez ceci et faites le moi savoir. Bonne chance. :)

0
SripadRaj