Hash utama untuk aplikasi Android-Facebook


229

Saya sedang mengerjakan aplikasi Android, di mana saya ingin mengintegrasikan fitur posting Facebook. Saya mengunduh Facebook-Android SDK, dan saya mendapatkan readme.md (file teks) di sana, di mana disebutkan untuk menghasilkan hash kunci untuk Android. Bagaimana cara menghasilkannya?


2
Anda dapat memeriksa tautan ini javatechig.com/2012/12/10/…
Nilanchal

2
periksa ini Untuk mereka yang masih menghadapi masalah,
Chintan Khetiya

Hasilkan HashKey untuk mode debug dan lepaskan dengan menggunakan ini. stackoverflow.com/questions/7506392/…
Naeem Ibrahim

Untuk mendapatkan kunci menonton video ini
Soon Santos

Jawaban:


310

Berikut adalah langkah-

  1. Unduh openssl dari kode Google (Jika Anda memiliki mesin 64 bit, Anda harus mengunduh openssl-0.9.8e X64 bukan versi terbaru)

  2. Ekstrak itu. buat folder- OpenSSL di C: / dan salin kode yang diekstrak di sini.

  3. mendeteksi jalur file debug.keystore. Jika Anda tidak menemukan, maka lakukan pencarian di C: / dan gunakan Path pada perintah di langkah berikutnya.

  4. mendeteksi jalur keytool.exe Anda dan pergi ke dir / in command prompt dan jalankan perintah ini dalam 1 baris-

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

    • itu akan meminta kata sandi, taruh android
    • itu saja. kamu akan mendapatkan kunci-hash

Untuk info lebih lanjut, kunjungi di sini


5
Jawaban ini hampir berhasil untuk saya di Win7 x64. Namun, sertifikat yang disandikan yang dihasilkan tidak benar. Jawaban Bryan Bedard di bawah ini akan menghasilkan nilai cert yang benar. Saya menduga perpipaan pada windows adalah penyebabnya.
Walt Armor

10
Catatan untuk pengguna 64 bit: ini bekerja dengan versi openssl-0.9.8e X64 saja tidak digunakan dengan openssl-0.9.8k X64
Nicola Peluchetti

Saya mengunduh openssl-0.9.8e X64 untuk sistem saya dan mengekstraknya. Tidak mengandung apa pun kecuali satu file dengan beberapa data. Tolong bantu saya untuk tahu lebih banyak.
Ravikiran

2
perintah harus dijalankan di folder bin java di sistem windows.
Antrromet

1
@HanishSharma Coba tinggalkan $.
larangan geoengineering

241

[EDIT 2020] -> Sekarang saya sangat merekomendasikan jawabannya di sini , cara yang lebih mudah menggunakan studio android, lebih cepat dan tidak perlu membuat kode apa pun - kode di bawah ini kembali pada masa gerhana :) -.

Anda dapat menggunakan kode ini dalam aktivitas apa pun. Ini akan mencatat hashkey di logcat, yang merupakan kunci debug. Ini mudah, dan ini melegakan daripada menggunakan SSL.

PackageInfo info;
try {
    info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String something = new String(Base64.encode(md.digest(), 0));
        //String something = new String(Base64.encodeBytes(md.digest()));
        Log.e("hash key", something);
    }
} catch (NameNotFoundException e1) {
    Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
    Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
    Log.e("exception", e.toString());
}

Anda dapat menghapus kode setelah mengetahui kunci;)


27
Guys, hati-hati, setelah membuat apk, hash kunci berubah! karena menggunakan kode ini Anda mendapatkan hash debug keystore, tetapi ketika membuat apk, itu hash lain, harus menangkapnya dari log setelah mencoba apk ur Anda di emulator, lalu hapus kode dan ekspor lagi tanpa log ini :) - saya tahu ini merepotkan: D tetapi bagi saya itu lebih mudah daripada keytool, semoga sukses;)
Bassem Wissa

4
Opensssl selalu menciptakan masalah. Metode ini adalah yang terbaik. Cukup buat aplikasi kosong, dan cetak kunci, Gunakan. Terima kasih sobat!!
AnhSirk Dasarp

1
Sejauh ini, ini adalah solusi termudah. Menggunakan keytoolperintah saya mendapatkan hash kunci yang salah (saya tidak tahu mengapa, memutuskan saya tidak cukup peduli untuk menyelidiki). Ini berhasil dan secara harfiah membutuhkan waktu 5 menit untuk mendapatkan debug dan melepaskan hash kunci. +1
Chris Cirefice

1
Ya Sebastien, Anda hanya perlu menginstal apk yang ditandatangani pada perangkat, hubungkan ke android studio dan periksa log kucing, atau Anda dapat menunjukkan hash dalam edittext di ui dan menyalinnya, toh ya hash kode ini menghasilkan bekerja dengan apk yang ditandatangani :)
Bassem Wissa

1
menggunakan keytool sangat berantakan ini benar-benar sederhana
Tabish

135

Saya telah membuat alat kecil untuk Windows dan Mac OS X. Cukup masukkan file key-store, dan dapatkan kunci hash.

Jika Anda ingin file debug.keystore default, gunakan alias dan kata sandi default. Selain itu, gunakan file dan nilai keystore Anda sendiri.

Lihat, unduh versi Windows atau unduh versi Mac OS X (Dev-Host mungkin kadang-kadang turun ... jadi jika tautan rusak, PM saya dan saya akan memperbaikinya).

Saya harap itu membantu kalian ...

31 Des 2014 - EDIT: Host yang diubah ke AFH. Tolong beri tahu saya jika tautannya rusak

21 Nov 2013 - EDIT:

Seperti yang diminta oleh pengguna, saya menambahkan lokasi keystore default dan tombol DONATE. Jangan ragu untuk menggunakannya jika saya telah membantu Anda. :)

Tangkapan layar Tangkapan layar 2


1
Terbaik. Metode. Pernah. Di mana tombol donasi?
Adam Varhegyi

1
@ Shahar2k5 Tidak tahu benar, memulai lagi dan bekerja seperti pesona. Maaf
Anearion

1
Bekerja seperti pesona! Terima kasih telah berbagi :)
Vinayak

1
@Shahar Barsheshet Terima kasih. kamu benar. Diunduh dari domain Devhost dan tidak ada masalah yang dihadapi.
MajorGeek

1
Saya tidak mengerti sesuatu: mengapa alat Anda memberikan kunci SHA yang berbeda, dibandingkan dengan menggunakan keytoolbaris perintah? Bukankah seharusnya menghasilkan hasil yang identik, jika diterapkan pada file keystore yang sama?
nightfixed

64

Instruksi yang saat ini ada di Tutorial Android Facebook tidak berfungsi dengan baik di Windows . Contoh mereka menunjukkan cara mem-pipe output keytool ke openssl tetapi jika Anda mencoba ini pada Windows output tidak valid untuk beberapa alasan. Saya menemukan bahwa saya harus menggunakan file perantara untuk membuatnya berfungsi dengan baik. Inilah langkah-langkah yang berhasil bagi saya:

Mulailah dengan mengunduh openssl untuk Windows dari Google.

C:\Users\Me>keytool -exportcert -alias my_key -keystore my.keystore -storepass PASSWORD > mycert.bin

C:\Users\Me>openssl sha1 -binary mycert.bin > sha1.bin

C:\Users\Me>openssl base64 -in sha1.bin -out base64.txt

Setelah menjalankan perintah ini hash yang valid disimpan di file base64.txt. Salin dan tempel ini ke pengaturan aplikasi Anda di Facebook.


Berfungsi sempurna, semuanya gagal.
Oliver Dixon

2
Betapa PITA - tetapi Bryan benar! Perintah akan menghasilkan hash hampir tidak peduli apa, apakah jalur Anda salah, kata sandi salah, atau pipa tidak berfungsi dengan benar - Anda akan MASIH DAPATKAN HASH tetapi tidak akan berfungsi. Jadi (pada Windows) saya membuang Powershell dan mencoba Cygwin - masih tidak berfungsi. Hanya setelah menyalin file debug.keystore ke direktori yang berfungsi saya dapat menjalankan dan bekerja !!
Bobby

2
Jadi, secara ringkas, di Windows, gunakan teknik Bryan untuk memecahnya, ATAU gunakan cygwin dengan file keystore Anda di direktori kerja: keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64 Jika tidak meminta Anda untuk kata sandi maka tidak menemukan file keystore dengan benar.
Bobby

Bekerja dengan sempurna untuk saya. Jawaban yang bagus
Ron

Jika Anda ingin menghindari hash untuk kasus kata sandi yang salah, cukup periksa mycert.bin Anda sebelum melanjutkan dengan openSSL. Kalau tidak, Anda akan hashing teks kesalahan kata sandi yang salah :)
Vaiden

50

Inilah yang diberikan di halaman resmi Facebook :

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

Biarkan saya memecah perintah ini menjadi beberapa bagian.

  1. Carilah "keytool.exe". Anda dapat mencarinya di drive C :. Anda dapat menemukannya di "java jdk"atau "java jre". Jika Anda telah menginstal banyak versi, pilih salah satunya.

  2. Buka prompt CMD dan buka direktori di atas tempat Anda menemukannya "keytool.exe".

    Klip "exe`" dan tempel perintah di atas yang disediakan di halaman Facebook.

  3. Anda akan mendapatkan kesalahan saat memasukkan ini sehingga OpenSSL tidak dikenali sebagai perintah input output. Solusi: Unduh "openssl" dari OpenSSL (jika Anda memiliki mesin 64-bit, Anda harus mengunduh openssl-0.9.8e X64 ). Ekstrak dan simpan di mana saja ... Saya menyimpannya di drive C: di OpenSSlfolder

  4. Ganti openssl pada perintah di atas di mana Anda mendapatkan kesalahan OpenSSL dengan "C: \ OpenSSL \ bin \ openssl" di kedua tempat setelah pipa, "|".

  5. Jika diminta kata sandi, masukkan android .

Dan Anda akan mendapatkan kunci hash Anda. Untuk langkah lebih lanjut, lihat lagi halaman Facebook.


32

Tambahkan kode ini ke onCreateaktivitas Anda, itu akan mencetak hash di bawah tag KeyHash di logCat Anda

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 (NameNotFoundException e) {

}
catch (NoSuchAlgorithmException e) {

}

Anda dapat menambahkan beberapa hashke untuk akun Anda, jadi jika Anda telah menjalankan debug jangan lupa untuk menjalankan ini lagi dalam mode rilis .


solusi hebat, saya kira seharusnya tidak ada versi unsigned yang tidak dapat dieksekusi? versi yang tidak ditandatangani seharusnya tidak dapat dipasang di perangkat apa pun. Versi debug tersebut ditandatangani dengan debug keystore :)
benleung

26

Untuk mendapatkan kode hash kunci Android, ikuti langkah-langkah ini:

  1. Unduh OpenSSL untuk Windows di sini
  2. Sekarang unzip ke drive C.
  3. Buka prompt CMD
  4. Tipe cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. Kemudian ketikkan hanya keytool -export -alias myAlias -keystore C:\Users\nama pengguna Anda\.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
  6. Selesai

2
Jawaban yang bagus Terima kasih banyak.
Palani Kumar

1
Apakah ini untuk kunci debug atau untuk kunci rilis?
IgorGanapolsky

@IgorGanapolsky alih-alih jalur myKeyStore, berikan jalur kunci rilis Anda. Kode di atas adalah untuk kunci debug
Pallavi

17

Solusi paling sederhana yang saya temukan adalah ini:

  • Buka Log Cat
  • Coba dan akses Facebook dengan Android SDK
  • Cari baris dalam log yang terlihat seperti ini:

    04-24 01:14:08.605: I/System.out(31395): invalid_key:Android key mismatch. 
    Your key "abcdefgHIJKLMN+OPqrstuvwzyz" does not match the allowed keys specified in your
    application settings. Check your application settings at 
    http://www.facebook.com/developers
  • Salin "abcdefgHIJKLMN + OPqrstuvwzyz" dan rekatkan ke area Facebook Android Key Hash.


ini adalah cara paling sederhana dan paling efektif, ambil saja dari log tanpa bahkan openssl!
Luca C.

ini adalah satu-satunya solusi untuk saya !. Saya tidak melihat log seperti Anda, tetapi saya melihat ini KeyHash: XWwXXXXX/5xxxxxxxxxxx=di log dan membantu saya keluar!
Khang Dinh Hoang

14

Anda bisa mendapatkan hash kunci dari kunci SHA-1. Ini sangat sederhana, Anda perlu mendapatkan kunci SHA-1 (Signed APK) dari Play Store periksa gambar di bawah ini.masukkan deskripsi gambar di sini

Sekarang Salin kunci SHA-1 dan lekatkan di situs web ini http://tomeko.net juga periksa gambar di bawah ini untuk mendapatkan Key Hash Anda.

masukkan deskripsi gambar di sini


1
Terima kasih. Saya mencoba untuk mendapatkan hash kunci dengan menggunakan OpenSSL. Butuh saya selama 1 menit dan itu mudah.
Green Y.

1
Terima kasih banyak! Ini adalah solusinya karena Google menandatangani aplikasi saya sekarang (saya hanya menggunakan sertifikat unggah / keystore)
Harrison

13

Saya sudah melakukannya dengan OS Linux & OS Windows :

Linux:

  • Unduh Openssl
  • Terminal terbuka
  • keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64

Ubah Alias ​​Name dan Keystore dengan jalurnya sebagai kebutuhan Anda.

Terminal akan meminta untuk Sandi dari Keystore. Anda harus memberikan kata sandi untuk Keystore yang sama .

Jadi akhirnya Anda akan mendapatkan Release Hashkey .

Windows:

Langkah-langkah untuk Melepaskan Hashkey :

  • Unduh Openssl (Unduh dari sini ), saya telah mengunduh untuk OS 64 bit , Anda dapat menemukan lebih banyak di sini
  • Ekstrak file zip yang diunduh ke C: \ drive saja
  • Buka command prompt
  • keytool -exportcert -alias **myaliasname** -keystore **"C:\Users\hiren.patel\Desktop\mykeystore.jks"** | "C:\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary | "C:\openssl-0.9.8e_X64\bin\openssl.exe" base64

Ubah Alias ​​Name dan Keystore dengan jalurnya sebagai kebutuhan Anda.

catatan:

Harap letakkan detail Anda di tempat yang saya tandai antara ** **.

Terminal akan meminta untuk Sandi dari Keystore. Anda harus memberikan kata sandi untuk Keystore yang sama .

Jadi akhirnya Anda akan mendapatkan Release Hashkey .

Selesai


apa kata sandinya di sini?
Akash Bisariya

@AkashBisariya, kata sandi keystore, yang telah Anda berikan saat membuat keystore.
Hiren Patel

Di mana saya dapat menemukan kunci setelah berhasil dibuat?
Anand Phadke

11
  • unduh openSSL untuk windows di sini Anda dapat menemukan 64bit dan 32bit di sini

  • ekstrak file yang diunduh

  • buat nama folder openSSL di drive C
  • salin semua item yang diekstraksi ke folder openSSL (bin, include, lib, openssl.cnf)
  • dapatkan android debug keystore, lokasi default adalah

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

  • sekarang dapatkan command prompt Anda dan tempel kode ini

keytool -exportcert -alias androiddebugkey -keystore C: \ Users \ username.android \ debug.keystore | "C: \ openSSL \ bin \ openssl" sha1 -binary | "C: \ openSSL \ bin \ openssl" base64

  • tekan enter dan Anda akan mendapatkan kode kunci 28 digit

TIDAK meminta kata sandi. mengetik androidmemberi hash 24 digit dan mengetik amemberi hash 28 digit. Tidak tahu kenapa!
sud007

tautan buruk! mereka tidak memiliki keytool sama sekali
KawaiKx

6

Anda perlu membuat keystore oleh keytool untuk aplikasi yang ditandatangani untuk android seperti prosedur yang dijelaskan dalam Situs Android dan kemudian Anda harus menginstal cygwin dan kemudian Anda perlu menginstal openssl dari kode google kemudian cukup jalankan perintah berikut dan Anda akan mendapatkan hash kunci untuk android dan kemudian masukkan kunci hash ke dalam aplikasi facebook yang Anda buat. Dan kemudian Anda dapat mengakses aplikasi facebook melalui Aplikasi Android untuk posting dinding ("publish_stream") bisa menjadi contoh.

$ keytool -exportcert -alias alias_name -keystore sample_keystore.keystore | openssl sha1 -binary | openssl base64

Anda perlu menjalankan perintah di atas dari cygwin.


6

Unduh openSSL -> Instal -> biasanya instal di C: \ OpenSSL

kemudian buka cmd dan ketik

cd../../Program Files (Enter)

java (Enter)

dir (Enter)

cd jdk1.6.0_17 (varies with jdk versions) (Enter)

untuk memeriksa versi jdk, buka C: / file program / java / jdk_version

cd bin (enter)

keytool -exportcert -alias androiddebugkey -keystore C:Users\Shalini\.android\debug.keystore | "C:\OpenSSL\bin\openssl sha1 -binary | "C:\OpenSSL\bin\openssl base64 (Enter)

Ini akan meminta Anda untuk kata sandi yang android.


6
  1. Cukup Buka Anda File Aktivitas Utama dan buat fungsi penyebutan di bawah ini:

         try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "your.application.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) {
    
    } catch (NoSuchAlgorithmException e) {
     }

1.1 Jalankan Aplikasi Anda, ini akan menghasilkan kunci Hash untuk aplikasi Anda.

  1. Sekarang, Buka log kucing dan cari dengan "KeyHash" dan salin kunci hash.

  2. Setelah Anda membuat kunci Hash, Anda dapat menghapus fungsi ini.


5

1) Buat kunci untuk menandatangani aplikasi Anda, dan ingat alias.

2) Instal OpenSSL.

3) Letakkan folder bin OpenSSL di jalur Anda.

4) Ikuti langkah-langkah yang disebutkan di bawah "Setup Single Sign-On" di FB-Android-SDK halaman , dan menghasilkan Anda Hash Key. Pastikan Anda memasukkan nama file alias dan keystore yang benar.

5) Buat aplikasi di Facebok, dan di bawah tab Perangkat Seluler, masukkan Kunci Hash ini.


5

Dokumentasi resmi di situs pengembang facebook :

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

    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                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) {

    }

@WilliamKinaan: kapan saja;): P
Hardik Thaker

@HardikThaker Saya menggunakan kode Anda itu memberi saya keyhash persis sama yang saya dapatkan menggunakan terminal dengan perintah ini keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64dan saya masih mendapatkan hash kunci tidak cocok dengan hash kunci tersimpan
Shan Xeeshi

4
keytool -exportcert -alias androiddebugkey -keystore       C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64

Ini bekerja untuk saya ...

Langkah:

1) Open command line go to - > java Keytool..... for me C:\Program Files\Java\JDK1.7\bin
2) Download OpenSSL from google
3) paste this with changing your paths -
   keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64 

    ....................   give proper debug.keystore path and openSSL path .. 

4) Finley it may be ask u password .. so give password -> android   ...
5) you will get 28 characters that will be your has key

4

Untuk Linux

Terminal Terbuka:

Untuk Pembuatan Debug

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

Anda akan menemukan debug.keystore dari folder ".android" salin dan tempel di desktop dan jalankan perintah di atas

Untuk rilis Build

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

CATATAN: Pastikan Dalam Kedua kasus itu harus meminta kata sandi. Jika tidak meminta kata sandi itu berarti ada yang salah dalam perintah.


Saya mendapatkan nilai berbeda dengan nama alias berbeda, bagaimana cara memverifikasi mana yang benar?
Javal Nanda

apakah itu meminta kata sandi dengan kedua nama alias?
Biraj Zalavadia

ya dan kata sandi apa pun yang saya masukkan itu memberi saya kunci hash .. aplikasi saya sudah ada di play store dan fb asli tidak berfungsi sekarang. Bagaimanapun saya perlu menghasilkan hash kunci yang tepat untuk rilis build. Pengembang menyarankan untuk memasukkan kode di dalam onCreate dalam posting berikut, tetapi saya ingin membuatnya berfungsi tanpa pembaruan aplikasi di playstore stackoverflow.com/questions/15021790/…
Javal Nanda

ya ada masalah dengan janda dengan openssl. Anda dapat mencapai dengan kode yang ditentukan dalam posting itu.
Biraj Zalavadia

Jika Anda ingin melakukannya tanpa pembaruan di playstore. 1) Buat aplikasi Demp android Baru. 2) Masukkan potongan kode itu di buat. 3) tanda tangani aplikasi demo ini dengan keystore aplikasi Anda yang sama di app store 4) Kemudian Jalankan apk ini yang ditandatangani 5) Dan gunakan kunci hash ini akhirnya
Biraj Zalavadia

4

Untuk aplikasi Android

Kode ini digunakan untuk mendapatkan kunci hash di aplikasi Android Anda untuk integrasi Facebook. Saya telah menguji semua perangkat dan berfungsi. Hanya ubah nama paket dari kode ini:

private void facebookHashKey() {

    try {
        PackageInfo info = getPackageManager().getPackageInfo("com.app.helpcove", PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String hashCode  = Base64.encodeToString(md.digest(), Base64.DEFAULT);
            System.out.println("Print the hashKey for Facebook :"+hashCode);
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }
}

4

Seperti yang dijawab pada masalah yang sama saya menemukan ini bekerja untuk saya:

  • Salin apkname.apkfile yang Anda ingin tahu hash ke folder ' Java \ jdk1.7.0_79 \ bin '
  • Jalankan perintah ini keytool -list -printcert -jarfile apkname.apk
  • Salin SHA1nilainya dan konversikan menggunakan situs ini
  • Gunakan nilai Keyhash yang dikonversi ( mis. ZaHqo1xcaPv6CmvlWnJk3SaNRIQ = )

3

Solusi paling sederhana:

  1. Jangan tambahkan kunci hash, terapkan semuanya
  2. Saat login facebook ditekan, Anda akan mendapatkan pesan kesalahan "hash kunci tidak valid. Hash kunci" xxx "tidak cocok dengan kunci tersimpan. ..."
  3. Buka dasbor aplikasi facebook dan tambahkan hash "xxx =" ("xxx" hash dari tanda kesalahan + "=")

3

Untuk menghasilkan hash kunci rilis Anda, jalankan perintah berikut di Mac atau Windows menggantikan alias kunci rilis Anda dan jalur ke keystore Anda.

Di Windows, gunakan:

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

Perintah ini harus menghasilkan 28 string characher. Ingat bahwa COPY dan PASTE Hash Kunci Rilis ini ke dalam pengaturan Android ID Aplikasi Facebook Anda.

image: fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2178-6/851568_627654437290708_1803108402_n.png

Rujuk dari: https://developers.facebook.com/docs/android/getting-started#release-key-hash dan http://note.taable.com


3

Gunakan ini untuk hash kunci cetak di kotlin

try {
        val info = context.getPackageManager().getPackageInfo(context.packageName,
                PackageManager.GET_SIGNATURES);
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
        }
    }catch (e:Exception){

    }

2

Memecahkan milik saya juga di Android Studio tetapi dengan pendekatan yang sedikit berbeda.

Untuk mendapatkan nilai SHA-1 di Android Studio.

  1. Klik Gradle
  2. Klik Menandatangani Laporan
  3. Salin SHA-1

Klik panel bertanda di Android studio

  1. Nilai SHA-1 terlihat seperti CD ini: A1: EA: A3: 5C: 5C: 68: FB: FA: 0A: 6B: E5: 5A: 72: 64: DD: 26: 8D: 44: 84

    dan buka http://tomeko.net/online_tools/hex_to_base64.php untuk mengonversi nilai SHA1 Anda menjadi base64. Inilah yang Facebook butuhkan untuk mendapatkan hash yang dihasilkan "******************** =" dan menyalin hash kunci ke konsol aplikasi facebook.

Sebagian dari jawaban ini diambil dari sini Github Link


2

Ada dua metode yang tersedia kompleks satu dan yang mudah

Metode Satu: (Kompleks kecil)

pertama-tama Anda harus mengunduh ssl 64bit atau 32bitsesuai, ingatlah untuk mengunduh file dengan nama yang berisi esetelah kode versi openssl-0.9.8e_X64.zip OR openssl-0.9.8e_WIN32.zip tidak dengan kkode versi setelah,

dan letakkan di direktori AndroidStudio / jre / bin, jika Anda tidak tahu di mana harus meletakkannya, Anda dapat menemukan direktori ini dengan mengklik kanan pintasan studio android sebagai:

masukkan deskripsi gambar di sini

sekarang Anda telah mengelola dua hal yang diperlukan di satu tempat, tetapi Anda masih harus menemukan jalan untuk Anda debug.keystore, yang selalu dapat ditemukan di "C:\Users\yourusernamehere\.android\debug.keystore",

CATATAN Jika aplikasi Anda sudah diterbitkan, atau akan diterbitkan, maka gunakan keystore penandatanganan penerbitan Anda, jika dan hanya jika Anda menguji dalam mode pengembangan daripada Anda dapat menggunakan debug, keysotre

Karena semuanya sudah diatur, mari atur perintah yang ingin Anda jalankan untuk pembuatan kunci hash base64 format, dan perintah Anda akan terlihat seperti ini

keytool.exe -exportcert -alias androiddebugkey -keystore "C:\Users\ayyaz talat\.android\debug.keystore" | "D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" sha1 -binary |"D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" base64

itu akan meminta Anda untuk memasukkan kata sandi untuk debug.keystore, yang merupakan android secara default. jika Anda menggunakan kunci Anda sendiri, kata sandinya juga akan menjadi milik Anda. output akan terlihat seperti ini jika semuanya berjalan baik seperti yang diharapkan, semoga bisa membantu

masukkan deskripsi gambar di sini

Metode Kedua (Masing-masing mudah)

jika Anda tidak ingin melihat semua prosedur di atas, maka cukup gunakan metode berikut untuk mencatat haskey:

 private void printKeyHash() {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA1");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("KeyHash:", e.toString());
        } catch (NoSuchAlgorithmException e) {
            Log.e("KeyHash:", e.toString());
        }
    }

keluaran:

masukkan deskripsi gambar di sini


1

Pendekatan terbaik adalah dengan menggunakan kode berikut:

private void getHashKey(String pkgName)
{
    try
    {
        PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures)
        {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String hashKey = Base64.encodeBytes(md.digest());
            _hashKey_et.setText(hashKey);
            Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey);
        }
    }
    catch (NameNotFoundException e)
    {
        e.printStackTrace();
    }
    catch (NoSuchAlgorithmException e)
    {
        e.printStackTrace();
    }
}

Tapi saya sangat frustasi dengan kenyataan bahwa tidak ada alat sederhana untuk menghasilkan HashKey untuk aplikasi Facebook. Setiap kali saya harus bermain dengan Openssl dan Keytool atau menggunakan kode untuk mendapatkan hash dari tanda tangan ...

Jadi saya menulis KeyGenTool sederhana yang akan bekerja untuk Anda: -> KeyGenTool di Google Play <-

Nikmati :)


1

Saya melakukan kesalahan kecil yang harus diingat. Jika Anda menggunakan keystore, berikan nama alias Anda, bukan androiddebugkey ...

Saya memecahkan masalah saya. Sekarang jika Facebook sudah terinstal di perangkat saya, maka aplikasi saya masih mendapatkan data tentang integrasi login Facebook. Hanya peduli dengan kunci hash Anda.

Silahkan lihat di bawah ini.

C:\Program Files\Java\jdk1.6.0_45\bin>keytool -exportcert -alias here your alias name  -keystore "G:\yourkeystorename.keystore" |"G:\ssl\bin\openssl" sha1 -binary | "G:\ssl\bin\openssl" base64

Lalu tekan Enter- itu akan meminta Anda untuk kata sandi dan kemudian memasukkan kata sandi Anda, bukan Android.

Keren.


0
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.text.Editable;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

    Button btn;
    EditText et;
    PackageInfo info;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=(Button)findViewById(R.id.button1);
        et=(EditText)findViewById(R.id.editText1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                try {
                    info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES);
                    for (Signature signature : info.signatures) {
                        MessageDigest md;
                        md = MessageDigest.getInstance("SHA");
                        md.update(signature.toByteArray());
                        String something = new String(Base64.encode(md.digest(), 0));
                        //String something = new String(Base64.encodeBytes(md.digest()));
                        et.setText("" + something);
                        Log.e("hash key", something);
                    }
                } catch (NameNotFoundException e1) {
                    Log.e("name not found", e1.toString());
                } catch (NoSuchAlgorithmException e) {
                    Log.e("no such an algorithm", e.toString());
                } catch (Exception e) {
                    Log.e("exception", e.toString());
                }
            }
        });
    }



}

Kode ini tidak menghasilkan kunci hash yang valid untuk saya. @Jawaban Jamshid bekerja untuk saya di Mac OSX.
Loolooii

0

Kode Kotlin untuk mendapatkan kunci Hash

 private fun logHashKey() {
    try {
        val info = getPackageManager().getPackageInfo("your.package.name", PackageManager.GET_SIGNING_CERTIFICATES);
        for (signature in info.signingInfo.signingCertificateHistory) {

            val md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            val something = Base64.getEncoder().encodeToString(md.digest());
            Log.e("hash key", something);
        }
    } catch (e1: PackageManager.NameNotFoundException) {
        Log.e("name not found", e1.toString());
    } catch (e: NoSuchAlgorithmException) {
        Log.e("no such an algorithm", e.toString());
    } catch (e: Exception) {
        Log.e("exception", e.toString());
    }
}

Tolong jangan lupa untuk membuat kunci di lingkungan Debug dan Rilis karena mereka berubah sesuai pengaturan build.


0

coba ini :

  • dua cara untuk mendapatkan Nilai Kunci Hash

1) dapatkan kunci hash dari menggunakan baris perintah (Dokumen Resmi: https://developers.facebook.com/docs/android/getting-started )

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

ATAU

2) dapatkan kunci hash menggunakan kode

  @Override
   protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);

            //Hask Kay generation 
             GetKeyHase();
    }

    private void GetKeyHase() {
            try {
                PackageInfo info = getPackageManager().getPackageInfo("ADD YOUR PACKAGE NAME", PackageManager.GET_SIGNATURES);
                for (Signature signature : info.signatures) {
                    MessageDigest md = (MessageDigest.getInstance("SHA"));
                    md.update(signature.toByteArray());
                    String hashkey_value = new String(Base64.encode(md.digest(), 0));
                    Log.e("hash key", hashkey_value);
                    //check you logcat hash key value
                }
            }catch (Exception e) {
                Log.e("exception", e.toString());
            }
        }
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.