Jak utworzyć Hash klucza Android Facebook?

W ogóle nie rozumiem tego procesu. Udało mi się przejść do folderu zawierającego keytool w Java SDK. Chociaż ciągle dostaję błąd openssl nie rozpoznany jako wewnętrzne lub zewnętrzne polecenie. Problem w tym, że nawet jeśli uda mi się to uruchomić, to co bym zrobił i z czym potem?

Author: ROMANIA_engineer, 2011-09-22

18 answers

Oto co musisz zrobić -

Pobierz openSSl z kodu Wyciągnij to. utwórz folder-OpenSSL w C: / i skopiuj wyodrębniony kod tutaj.

Detect debug.ścieżka do pliku keystore. Jeśli u nie znaleziono, wykonaj wyszukiwanie w C: / i użyj ścieżki w poleceniu w następnym kroku.

Wykryj swój keytool.exe path i przejdź do tego katalogu / w wierszu polecenia i uruchom to polecenie w 1 linii -

$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

Zapyta o hasło, umieść Androida to wszystko. u will get a key-hash

 174
Author: coder_For_Life22,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-21 20:50:27

Dla Linuksa i Maca

Otwarty Terminal:

For Debug Build

keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64

Znajdziesz debugowanie.keystore w ".android " folder. Skopiuj go i wklej na pulpit i uruchom powyższe polecenie.

For release Build

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

Uwaga: Upewnij się, że w obu przypadkach pyta o hasło. Jeśli nie pyta o hasło, oznacza to, że coś jest nie tak w poleceniu. Hasło do debugowania .keystore jest "android" aby zwolnić, musisz wprowadzić hasło, które ustawiłeś podczas tworzenia keystore .

 110
Author: Biraj Zalavadia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-18 16:23:56

Proszę spróbować:

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String hashKey = new String(Base64.encode(md.digest(), 0));
                Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
            }
        } catch (NoSuchAlgorithmException e) {
            Log.e(TAG, "printHashKey()", e);
        } catch (Exception e) {
            Log.e(TAG, "printHashKey()", e);
        }
    }
 58
Author: Maddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 06:13:30

OpenSSL: musisz go zainstalować, jeśli nie jest preinstalowany z Twoim systemem operacyjnym (np. Windows nie ma preinstalowanego) . Jak zainstalować, który zależy od systemu operacyjnego (Dla Windows sprawdź link dostarczone przez coder_For_Life22).

Najprostszym sposobem bez bałaganu jest skopiowanie OpenSSL.exe binarny do ścieżki keytool jeśli jesteś na Windows. Jeśli nie chcesz tego robić, musisz dodać go do swojej zmiennej środowiskowej PATH. Następnie wykonaj polecenie podane w dokumentacji.

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Zauważ, że argument po -keystore wskazuje na klucz debugowania. Ta lokalizacja zależy również od systemu operacyjnego. Powinno znajdować się w jednej z następujących lokalizacji:

  • Windows Vista lub 7 - C:\Users\.Android\debug.keystore
  • Windows XP - C:\Documents i ustawienia\.Android\debug.keystore
  • OS X i Linux -~/.android / debug.keystore

If you did everything right, powinieneś zostać poproszony o podanie hasła. To jest android dla certyfikatu debugowania. Jeśli hasło jest poprawne, konsola wyświetla hash (nieco losowe znaki i cyfry).

Weź to i skopiuj do pola android key hash wewnątrz preferencji aplikacji na facebook. Aby się tam dostać, przejdź do developers.facebook.com/apps, wybierz swoją aplikację, przejdź do Edit settings i przewiń w dół. Następnie odczekaj kilka minut, aż zmiany wejdą w życie.

 42
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-21 20:59:53

Aby wygenerować hash klucza na komputerze lokalnym, uruchom narzędzie keytool Java (które powinno znajdować się na ścieżce konsoli) na keystore debug Androida. Jest to domyślnie w Twoim domu .android directory). Na OS X Uruchom:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

W systemie Windows użyj: -

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

Mam nadzieję, że to ci pomoże

Ref-developer facebook site

 21
Author: Rakesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-18 08:06:37

Dla Windows:

  1. otwórz wiersz polecenia i wklej poniżej polecenia

Keytool-exportcert-alias androiddebugkey-keystore / Align = "left" / Android\debug.keystore / OpenSSL sha1-binary / openssl base64

  1. Wprowadź hasło: android -- > naciśnij Enter

  2. Skopiuj wygenerowany klucz Hashowy -- > Zaloguj się na Facebook za pomocą konta programisty

  3. Przejdź do aplikacji Facebook -- > ustawienia -- > Wklej Hash key w " Key hashes" opcja -- > Zapisz zmiany.

  4. Teraz Przetestuj swoją aplikację na Androida za pomocą Facebook Log-in / Share itp.

 9
Author: swiftBoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-26 05:15:22

Jest też krótkie rozwiązanie. Po prostu uruchom to w aplikacji:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));

Dłuższy, który nie potrzebuje FB SDK (oparty na rozwiązaniu proszę.) :

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

Wynik powinien kończyć się znakiem"=".

 7
Author: android developer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-08 14:10:35

Tak uzyskałem moje:

private class SessionStatusCallback implements Session.StatusCallback {
        @Override
        public void call(Session session, SessionState state, Exception exception) {

            if (exception != null) {
                new AlertDialog.Builder(FriendActivity.this)
                        .setTitle(R.string.login_failed_dialog_title)
                        .setMessage(exception.getMessage())
                        .setPositiveButton(R.string.ok_button, null)
                        .show();
            }

Więc gdy próbujesz wejść bez klucza, wystąpi wyjątek. Facebook umieścił odpowiedni klucz w tym wyjątku. Wszystko, co musisz zrobić, to skopiować.

 6
Author: Valikpon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-04 13:35:15

Dla kogoś takiego jak ja tutaj są kompletne szczegóły (Dla Windows)

1. Pobierz OpenSSl albo 1st lub 2nd w oparciu o system 32bit lub 64bit .

2. Rozpakuj pobrany zip do katalogu C

3. Otwórz wyodrębniony folder do bin i skopiuj ścieżkę ,powinno to być coś w stylu C:\openssl-0.9.8k_X64\bin\openssl (Dodaj \openssl na końcu)

4. (Pobierz ścieżkę do folderu bin Jdk, jeśli wiesz jak, zignoruj to).

Otwórz Android studio ~plik~struktura projektu ( Ctrl + alt + shift + S), wybierz lokalizację SDK w lewym panelu bocznym, skopiuj lokalizację JDK i dodaj do niej /bin

Więc ostateczna lokalizacja JDK będzie jak C:\Program Files\Android\Android Studio\jre\bin

Stosujemy tę metodę, aby uzyskać lokalizację Jdk, ponieważ możesz użyć wbudowanego jdk tak jak ja

Tutaj wpisz opis obrazka

Teraz masz OpenSSL location & JDK location

5. teraz potrzebujemy debug keystore location , do tego otwórz C ~ > Users~>YourUserName~>.android powinno być debugowanie nazwy pliku.keystore, Teraz skopiuj lokalizację ścieżki, powinno być coś w stylu

C:\Users\Redman\.android\debug.keystore

6. teraz otwórz wiersz polecenia i wpisz polecenie

cd YourJDKLocationFromStep4  

W moim przypadku

 cd C:\Program Files\Android\Android Studio\jre\bin

7. skonstruuj teraz następujące polecenie

keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

W moim przypadku komenda będzie wyglądała tak:

keytool -exportcert -alias androiddebugkey -keystore C:\Users\Redman\.android\debug.keystore | C:\openssl-0.9.8k_X64\bin\openssl sha1 -binary | C:\openssl-0.9.8k_X64\bin\openssl base64

Teraz wprowadź To polecenie w wierszu polecenia , jeśli kiedykolwiek zrobiłeś coś dobrze, zostaniesz poproszony o hasło (password is android)

Enter keystore password:  android

To wszystko, otrzymasz klucz Hash, po prostu skopiuj go i użyj

 6
Author: Redman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-15 13:58:48

Dla easy vedio tutorial link do generowania KeyHash Proszę.

Pobierz openssl z Proszę.

 5
Author: Arpit Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-16 04:27:18

Pobierz open ssl :

Następnie dodaj OpenSSL \ bin do zmiennych systemowych path:

Mój komputer -> Właściwości -> zaawansowane konfiguracje -> Zaawansowane -> Zmienne systemowe -> pod zmiennymi systemowymi znajdź ścieżkę i dodaj ją do jej zakończeń: ;youfullopenssldir \ bin

Teraz otwórz wiersz poleceń w folderze jdk \ bin C:\Program Files \ Java \ jdk1.8. 0_40 \ bin (w systemie Windows przytrzymaj shift i kliknij prawym przyciskiem myszy - > otwórz wiersz poleceń tutaj) i użyj:

keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64

I skopiować 28 liczba długości, którą generuje po podaniu hasła.

 3
Author: sagits,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-24 06:29:30

Od API 26, możesz wygenerować swoje klucze HASHOWE za pomocą następującego kodu w KOTLIN bez potrzeby korzystania z Facebook SDK.

fun generateSSHKey(context: Context){
    try {
        val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES)
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            val hashKey = String(Base64.getEncoder().encode(md.digest()))
            Log.i("AppLog", "key:$hashKey=")
        }
    } catch (e: Exception) {
        Log.e("AppLog", "error:", e)
    }

}

Tutaj wpisz opis obrazka

 3
Author: Hanny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-30 09:50:33

Możesz pobrać wszystkie swoje odciski palców z https://console.developers.google.com/projectselector/apis/credentials
I użyj tego kodu Kotlina, aby przekonwertować go na keyhash:

fun main(args: Array<String>) {
    listOf("<your_production_sha1_fingerprint>",
            "<your_debug1_sha1_fingerprint>",
            "<your_debug2_sha1_fingerprint>")
            .map { it.split(":") }
            .map { it.map { it.toInt(16).toByte() }.toByteArray() }
            .map { String(Base64.getEncoder().encode(it)) }
            .forEach { println(it) }
}
 1
Author: Alexmelyon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-24 13:08:20

Znalazłem najprostsze narzędzie i używałem go wiele razy, to doskonale działa. zobacz, to pomoże.

Sprawdź Ta odpowiedź, aby uzyskać więcej szczegółów.

 1
Author: TapanHP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-03 06:36:47

Uruchom albo to w aplikacji:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");

Lub to:

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}
A potem spójrz na dzienniki.

Wynik powinien kończyć się znakiem"=".

Rozwiązanie oparte jest na Proszę. oraz Proszę. .

 1
Author: android developer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-08 14:09:45

Miałem dokładnie ten sam problem, nie pytano mnie o hasło i wydaje się, że miałem złą ścieżkę do pliku keystore.

W rzeczywistości, jeśli keytool nie znajdzie ustawionego magazynu, utworzy go i poda niewłaściwy klucz, ponieważ nie używa WŁAŚCIWEGO.

Ogólna zasada jest taka, że jeśli nie zostaniesz poproszony o hasło, wygenerowany zostanie niewłaściwy klucz.

 0
Author: Nick Tsitlakidis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-23 13:55:50

Możesz użyć tego apk

1.first install the app from the Google play store
2.install the above apk
3.launch the apk and input the package name of your app
4.then you will get the hash code you want
 0
Author: armnotstrong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-02 05:04:06

Https://developers.facebook.com/docs/android/getting-started/

4.19.0-25 stycznia 2017

Facebook SDK

Modified

Facebook SDK jest teraz automatycznie inicjowany po uruchomieniu aplikacji. W większości przypadków ręczne wywołanie FacebookSDK.sdkInitialize () nie jest już potrzebne. Zobacz upgrade guide aby uzyskać więcej szczegółów.

Do Debugowania

try {
    PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 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 (NoSuchAlgorithmException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}
 0
Author: Ketan Ramani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-17 11:56:00