2017-06-28 1 views
1

J'utilise la nouvelle signature d'application Google Play pour signer mon application et il existe une incompatibilité entre les clés.Signature de l'application Google Play - Incompatibilité KeyHash

J'ai intégré Facebook Connexion dans mon application et il a déclaré keyhash invalide. La version keyhash de mon APK est différente de la version keyhash créée par le processus de Google Play App Signing.

EDIT: Etape je l'ai fait:

1) a créé un fichier keystore JKS.

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

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

4) Une fois en ligne, télécharger et ouvrir l'application, l'initialisation Facebook dire: Dièse

non valide Quand je vérifie l'hashkey dans l'application via le code ci-dessous, la clé de hachage 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 la hashkey dit par Facebook dans le tableau de bord Facebook, il ne fonctionne pas. Il semble que Google Play App Signing modifie le hashkey lors du processus de signature. Avez-vous une idée pour le résoudre?

+0

Vous devez utiliser un hachage de clé séparé pour la production qui peut être généré à l'aide de votre fichier de magasin de clés.:) – SripadRaj

+0

En fait, je signe d'abord mon application pour la production via le studio android en utilisant un fichier .jks. Il crée une version APK que j'importe dans la console Google Play. Je ne vois pas ce que j'ai raté. –

+0

Je veux dire, vous devez générer la clé Facebook api en utilisant le fichier keystore de sortie, tout comme vous l'avez fait pour obtenir la clé api pour le certificat de débogage. – SripadRaj

Répondre

5

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 ce que vous devez fournir à Facebook comme clé de hachage (pas celle générée en utilisant keytool). La seconde moitié 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 d'application SHA-1 généré par Google, au lieu d'utiliser keytool et votre clé locale (qui semble être maintenant utilisée pour le téléchargement sur Google).

+0

Merci beaucoup, il sera aider beaucoup de gens :) –

0

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

étapes à suivre

hachage clé 1.Generate pour le certificat de libération.

Accédez à la ligne de commande et exécutez cette commande. Remplacez les espaces réservés dans <*..*> avec 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 le hachage de clé généré par la commande ci-dessus et collez-le dans votre console d'application Facebook comme ceci. .

3.Signez l'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

Oui, je l'ai fait dans mes démarches, mais il semble un peu différent lorsque vous utilisez la nouvelle application Google Play https://developer.android.com/studio/publish/app-signing.html –