web-dev-qa-db-fra.com

Android Facebook SDK: le hachage de la clé ne correspond à aucun hachage de clé stocké lors du téléchargement de Google Play

Mon application utilise Facebook Api pour la connexion de l'utilisateur. Sur le développement cela fonctionne bien, mais lorsque je l'ai téléchargé sur Google Play, il cesse de fonctionner.

Voici le journal des erreurs:

12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): Exception during service
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): com.facebook.http.protocol.ApiException: Key hash XXXXXXX does not match any stored key hashes.
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.Java:83)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.Java:162)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.protocol.ApiResponse.g(ApiResponse.Java:239)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.Java:272)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.Java:29)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.protocol.ApiResponseHandler.a(ApiResponseHandler.Java:56)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.protocol.ApiResponseHandler.handleResponse(ApiResponseHandler.Java:29)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.Java:280)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.Java:141)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.common.FbHttpRequestProcessor.b(FbHttpRequestProcessor.Java:103)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.Java:196)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.Java:374)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.Java:151)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.http.protocol.AbstractSingleMethodRunner.a(AbstractSingleMethodRunner.Java:18)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.katana.server.handler.PlatformOperationHandler.c(PlatformOperationHandler.Java:367)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.katana.server.handler.PlatformOperationHandler.a(PlatformOperationHandler.Java:260)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.fbservice.service.BlueServiceQueue.e(BlueServiceQueue.Java:299)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.Java:53)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.fbservice.service.BlueServiceQueue$3.run(BlueServiceQueue.Java:230)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:422)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at Java.util.concurrent.FutureTask.run(FutureTask.Java:237)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at com.facebook.common.executors.ListenableScheduledFutureImpl.run(ListenableScheduledFutureImpl.Java:59)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at Android.os.Handler.handleCallback(Handler.Java:733)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at Android.os.Handler.dispatchMessage(Handler.Java:95)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at Android.os.Looper.loop(Looper.Java:137)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284):     at Android.os.HandlerThread.run(HandlerThread.Java:61)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): Failed to send
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): com.facebook.fbservice.service.ServiceException: API_ERROR: API_ERROR
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.Java:640)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.Java:48)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at com.facebook.fbservice.ops.BlueServiceOperation$2.run(BlueServiceOperation.Java:605)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at Android.os.Handler.handleCallback(Handler.Java:733)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at Android.os.Handler.dispatchMessage(Handler.Java:95)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at Android.os.Looper.loop(Looper.Java:137)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at Android.app.ActivityThread.main(ActivityThread.Java:4998)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at Java.lang.reflect.Method.invokeNative(Native Method)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at Java.lang.reflect.Method.invoke(Method.Java:515)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:777)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:593)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284):    at dalvik.system.NativeStart.main(Native Method)

Se pourrait-il que la clé de hachage ait changé d'une manière ou d'une autre?

17
leojg

Vous avez suivi les étapes prévues par facebook pour la création d'une application de connexion?

Vous avez besoin d'un 'Production de clés' obtenue à partir de votre magasin de clés de publication:

En ligne de commande:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

Et ajoutez cette clé sur les options de la page de l'application facebook.

Plus d'informations: Documents Facebook 

40
Ramon Vicente

J'ai passé une journée entière à essayer de comprendre pourquoi cela ne fonctionnait pas ...

Lors de la génération de la clé de hachage pour la production, vous devez utiliser openssl-0.9.8e_X64.Zip sous Windows, vous ne pouvez pas utiliser openssl-0.9.8k_X64.Zip.

Les versions produisent différentes clés de hachage, pour une raison quelconque 9.8k ne fonctionne pas correctement ... 9.8e ne

Référence 

49
Milk Man

Cela donnait la mauvaise clé pour moi.

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

Une solution de contournement qui a fonctionné pour moi était la suivante: 1. Mettez ce code dans votre activité de lancement

private void printKeyHash(){
    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "YOUR_PACKAGE_NAME", 
                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 (NameNotFoundException e) {
        Log.d("KeyHash:", e.toString());
    } catch (NoSuchAlgorithmException e) {
        Log.d("KeyHash:", e.toString());
    }
}
  1. Exportez l'application pour la publier sur le Play Store à l'aide du .keyStore
  2. Installez l'application avant de télécharger sur le Play Store, lancez-la et notez le keyHash imprimé.
  3. Ajoutez le hachage à l'application Facebook.

J'espère que ça aide quelqu'un.

21
patrickfdsouza

Vous pouvez également simplement extraire le hachage manquant de la trace de pile de ApiException: Key hash XXXXXXX does not match any stored key hashes. Là vous l'avez déjà, il ne manque que le = à la fin. Alors, prenez XXXXXXX =.

12
Alf

Cela fonctionne bien pour moi

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

<RELEASE_KEY_ALIAS> est votre nom d'alias lors de la création d'une application signée.

enter image description here

Et <RELEASE_KEY_PATH>is Emplacement dans l'image ci-dessous Et puis entrez le mot de passe est clé créer mot de passe dans l'image ci-dessous au lieu de Android

enter image description here

5
Satheesh

Les solutions ci-dessus sont correctes à un point. Mais si quelqu'un est toujours confronté à un problème. Supprimez la clé du profil de développeur et rajoutez-la à nouveau à la fin, en appuyant sur Entrée. Vous devez ajouter la clé dans les paramètres et le développeur.

Je faisais face à des problèmes avec la version de l'application à Google Play et en utilisant la clé de libération

0
Prayag