it-swarm.com.de

facebook-Hash-Schlüssel bei der Verwendung von Android Studio

ich benutze Android Studio, um eine App zu entwickeln, die Facebook SDK verwendet.

wenn ich den folgenden Befehl verwendet habe

C:\Program Files\Java\jdk1.7.0_21\bin>keytool -exportcert -alias androiddebugkey
 -keystore "C:\Users\ninad\.Android\debug.keystore" | "D:\OpenSSL\bin\openssl" s
ha1 -binary |"D:\OpenSSL\bin\openssl" base64

es gab y5EquINHD6DvwVJFyJTuUEY3NSU = zurück

bei Verwendung dieses Hash-Schlüssels zeigt Facebook den Fehler 

ungültiger Android_key-Parameter. der Schlüssel c33Tm0FL_-kxyaPZq1JBLDh767U stimmt mit keinem zulässigen -Schlüssel überein.

Unterscheidet sich der Hash-Schlüssel für Facebook, wenn Eclipse und Android Studio verwendet werden? Welcher von diesen ist mein korrekter Hash-Schlüssel?

Ich habe beide Hash-Schlüssel zu meiner App in Facebook hinzugefügt. Die App zeigt immer noch ungültige Android_key-Parameter. 

27
null pointer

Warum probieren Sie diesen Code nicht aus und checken den Hash-Schlüssel aus, den Sie verwenden. Aus den Facebook-Dokumenten:

Neben der Überprüfung der Schritte zur Generierung des Schlüsselhashs ist eine weitere Option verfügbar, mit der sichergestellt wird, dass der richtige Schlüsselhash verwendet wird. Dazu muss in einer der Beispielanwendungen der Code geändert werden, um die an Facebook gesendete Signatur zu drucken.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "your.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 (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }
}
59
Tarun

Hier ist der Link zum Erstellen eines Facebook-Hash-Schlüssels:

public class FacebookHashKeyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_facebook_hash_key);
        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) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}

Code aus hier .

7
Vijay Arora

führen Sie es einfach in der Oncreate-Methode aus 

private void printHashKey() {

    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "-----------PUT 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 (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }

}
4
Gharjyot Singh

Ich persönlich mag es, meinen Hash in der build.gradle-Datei der Anwendung zu generieren.

Diese build.gradle-Funktion generiert den Hash unter Windows (ändern Sie C:\\OpenSSL-Win64\\bin\\openssl in Ihren binären OpenSSL-Speicherort):

def getFacebookHash = { ->
    try {
        def stdOut = new ByteArrayOutputStream()
        def stdIn = new ByteArrayInputStream()
        exec {

            commandLine "keytool", "-exportcert", "-alias", KEY_ALIAS, "-keystore", STORE_FILE, "-storepass", STORE_PASSWORD
            standardOutput = stdOut
        }
        stdIn = new ByteArrayInputStream(stdOut.toByteArray())
        stdOut = new ByteArrayOutputStream()
        exec {
            standardInput = stdIn
            commandLine "C:\\OpenSSL-Win64\\bin\\openssl", "sha1", "-binary"
            standardOutput = stdOut
        }
        stdIn = new ByteArrayInputStream(stdOut.toByteArray())
        stdOut = new ByteArrayOutputStream()
        exec {
            standardInput = stdIn
            commandLine "C:\\OpenSSL-Win64\\bin\\openssl", "base64"
            standardOutput = stdOut
        }
        def hashString = stdOut.toString().trim()
        return hashString
    }
    catch (error) {
        return error.toString();
    }
}

Sie können das Ergebnis dann an beliebiger Stelle in Ihrem Gradle-Skript ausdrucken.

println "Facebook Release Key Hash: " + getFacebookHash()

Ich bewahre die notwendigen Angaben in gradle.properties auf:

STORE_FILE=C:/Keystore.jks
STORE_PASSWORD=password
KEY_ALIAS=keystoreAlias
KEY_PASSWORD=password
0
Tim K

Angenommen, Sie haben das Kopieren und Einfügen von der OpenSL-Ausgabe in die Facebook-App-Einstellungen vorgenommen, damit es keine Verwirrung hinsichtlich ähnlich aussehender Zeichen gibt oder G6 ...

Ich habe kürzlich ein Diagnoseprogramm in den Play Store gestellt, das den für alle Apps auf Ihrem Telefon installierten Schlüsselhash anzeigt. Suchen Sie nach "GetKeyHash". Es zeigt Ihnen alle Apps auf Ihrem Gerät an, sortiert nach dem Zeitpunkt der letzten Aktualisierung, und Sie können eine beliebige erweitern, um den Hash-Schlüssel, den Paketnamen und die gültigen Aktivitätsnamen anzuzeigen. Die korrekte GetKeyHash-App fordert oder verwendet keine speziellen Berechtigungen, und Android sollte dies bei der Installation mitteilen.

Um auf einem Simulator zu laufen, ist dieser auch unter http://rightparen.com/Android/GetKeyHash.apk verfügbar. 

Wenn Sie eine Debug-Version Ihrer App in einer IDE erstellen, unterscheidet sich der Schlüssel-Hash von der im Play Store gelieferten Verkaufsversion. Sie können in der Facebook-Entwicklerkonsole mehrere Schlüsselhashes für eine App hinzufügen, um Debug-Schlüssel sowie Ihren Verkaufsschlüssel zu ermöglichen.

Wenn dies zu demselben Ergebnis führt, könnte es einen Fehler geben. Als mögliche Problemumgehung nur für einen Debug-Schlüssel können Sie ~/.Android/debug.keystore sichern und die Datei löschen. Beim nächsten Build erstellt das Android-System einen neuen Schlüssel, der den Fehler möglicherweise nicht auslöst. An diesem Punkt müssen Sie die App von Ihrem Gerät deinstallieren. Andernfalls wird bei der Installation eine Fehlermeldung angezeigt, dass der apk mit demselben Zertifikat signiert werden muss. Dann können Sie GetKeyHash wie oben oder eine der Standardmethoden verwenden, um den neuen Schlüsselhash zu erhalten und ihn Ihrer App auf Facebook hinzuzufügen.

0
rightparen

Sie könnten den aktuellen Alias ​​auflisten, der sich in dieser Datei befindet. Und dann könnten Sie den korrekten Namen verwenden, um den Hash zu erhalten ...

keytool -list -keystore keystorefile

*****************  WARNING WARNING WARNING  *****************
* La integridad de la información almacenada en el almacén de claves  *
* NO se ha comprobado.  Para comprobar dicha integridad, *
* debe proporcionar la contraseña del almacén de claves.                  *
*****************  WARNING WARNING WARNING  *****************

Tipo de Almacén de Claves: JKS
Proveedor de Almacén de Claves: Sun

Su almacén de claves contiene 1 entrada

androiddebugkey, Sep 22, 2016, PrivateKeyEntry, 
Huella Digital de Certificado (SHA1): 3B:8F:DB:46:A0:B7:2E:37:E1:78:41:10:BD:D0:8A:FF:63:E0:94:22

Wie Sie sehen können, gibt es 1 Schlüssel mit dem Namen androiddebugkey... in Ihrem Fall haben Sie wahrscheinlich nicht ... das.

{C:\Program Files\Java\jdk1.7.0_21\bin>keytool -exportcert -alias androiddebugkey
 -keystore "C:\Users\ninad\.Android\debug.keystore" | "D:\OpenSSL\bin\openssl" s
ha1 -binary |"D:\OpenSSL\bin\openssl" base64
}

was wird alles zurückgeben, was es will ... in diesem Fall.

y5EquINHD6DvwVJFyJTuUEY3NSU=
0
superUser