2016-08-01 6 views
1

Ich benutze die Facebook-Login-Integration zu meiner App. Ich habe den Hash-Schlüssel Facebook für signierte APK konfiguriert und erfolgreich ausgeführt. Aber manchmal, wenn ich eine neue APK-Datei freigebe, ist der Hash-Schlüssel nicht mehr gültig ("ungültiger Schlüssel-Hash-Facebook-Android passt nicht zu irgendwelchen gespeicherten").Android Facebook Hash-Schlüssel für APK unterzeichnet manchmal ändern

ich diesen Link unten lesen festgestellt, dass „auch je nach PC, manchmal kann der Schlüssel ändern, und wenn ja, werden die Hash-Änderungen und Sie müssen nur für die unterbringen“ android hash key

Could bitte hep mich, um mehr Details darüber zu erklären? Wird der Hash-Schlüssel Facebook für signierte APK manchmal geändert? Wie wäre es, wenn die App hochgeladen wird, um Store zu spielen?

Vielen Dank.

+0

i gleiches Problem konfrontiert, nachdem ich Hash-Schlüssel bekam, während Debug-Zeichen apk.that Schlüssel für mich gearbeitet. – Vasant

+0

Sie müssen Ihren Hash-Schlüssel bei Facebook Entwickler-Konsole registrieren, während Sie Ihre apk im Freigabemodus freigeben! – Piyush

+0

in der Facebook App Einstellungen Seite gibt es eine Option zum Hinzufügen mehrerer Hash-Werte ... Wenn Sie Android Studio verwenden, können Sie einfach Hash-Wert für signierten Build erhalten, indem Sie "SigningReport" Aufgabe direkt von Gradle Task-Liste auf der rechten Seite Fenster ausführen. ..thanks –

Antwort

0

Der Debug Key Hash ändert sich, wenn Sie Ihren PC wechseln, da jeder PC verschiedene debug.keystore-Dateien hat. Wenn Sie Release Keyshash mit Ihrer release.keystore-Datei verwenden, ändert sich dies nicht, selbst wenn Sie den PC wechseln. In diesem Fall verwenden Sie die Datei release.keystore.

+0

Mit Ihrem Kommentar, das heißt, der Hash-Schlüssel wird nie geändert, wenn wir nur eine Datei release.keystore verwenden, nicht wahr? –

+0

Ja. Es wird sich nicht ändern wie in der Entwicklerdokumentation von Facebook. – LvN

+0

Wenn es sich ändert, stellen Sie sicher, dass Sie die gleiche Datei verwenden und dass der Keyhash, den Sie der Facebook-Entwicklerkonsole hinzugefügt haben, korrekt ist. Ich schlage vor, dass Sie keyhash mit logcat verwenden, gehen Sie nicht zum Befehlszeilentool, da es verwirrend ist. Sie können die Antwort von @ user3793589 verwenden. Generiere die signierte Apk und starte sie auf deinem Gerät, überprüfe das Logcat und erhalte deinen Release Keyhash. – LvN

0

Wenn sich Ihre App in Entwicklung befindet, wird der Debug-Hash-Schlüssel für die Facebook-Integration verwendet. Der Debug-Hash-Schlüssel ist maschinenspezifisch (d. H. Der PC, an dem Sie gerade arbeiten)

Während der Freigabe-Hash-Schlüssel anders ist als der Debug-Schlüssel (wird sich nicht ändern). Wenn Sie eine signierte APK zum Hochladen generieren, muss ein Release-Hash-Schlüssel für die Facebook-Integration mit Ihrer App aktualisiert werden.

lesen this für ein besseres Verständnis darüber, wie ein Release Hash-Schlüssel für Facebook erstellen

Sie können mit dem folgenden Code, um Ihre Schlüssel Hash überprüfen:

// Add code to print out the key hash 
    try { 
     String PACKAGE_NAME=getApplicationContext().getPackageName();; 
     PackageInfo info = getPackageManager().getPackageInfo(
       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) { 

    } catch (NoSuchAlgorithmException e) { 

    }  
+0

Danke für Ihre Antwort. Wie ich bereits bemerkt habe, liefere ich erfolgreich mit einem Hash-Schlüssel für Facebook mit signierter APK, aber irgendwann, wenn ich eine neue APK-Datei zum Testen erstelle, ist der Hash-Schlüssel nicht mehr gültig. Ich habe nur einen PC dafür benutzt. Mit deinem Kommentar bedeutet das, dass der Hash-Schlüssel geändert werden kann, wenn wir eine neue APK-Datei generieren, richtig? –

+0

@DinhThang Haben Sie Ihren Paketnamen geändert? oder Projektname? – Arshak

+0

@DinhThang Ich habe einen Code hinzugefügt, der Ihren keyhash in logcat während der Ausführung Ihrer App anzeigt. Sie können das mit dem in der Facebook Developer Console gespeicherten Keyhash vergleichen und den Keyhash hinzufügen, falls er sich unterscheidet. – Arshak

0

Sie müssen sowohl einen Entwickler Hashkey registrieren (bezogen auf Ihren Computer) und den Produktions-Hashkey (bezogen auf die signierte Version) auf Facebook. Um sicherzustellen, dass Sie die richtigen Schlüssel haben, dies in Ihrem Code ausführen und die Ausgabe kopieren:

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()); 
      System.out.println(Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
      } 
    } catch (NameNotFoundException e) { 

    } catch (NoSuchAlgorithmException e) { 

    }