Integrasi Android Android dengan hash kunci tidak valid

194

Di salah satu aplikasi saya, saya perlu mendapatkan data dari Facebook ... Saya melakukan ini:

Saya telah membuat ID aplikasi . Ini berhasil masuk, tetapi setelah keluar, saya masuk, dan kemudian memberi saya:

Cuplikan layar kesalahan hash kunci tidak valid Facebook

Apa yang salah yang saya lakukan? Saya menggunakan Facebook SDK ... Saya telah menginstal Facebook di ponsel saya ... Ini berjalan dengan baik dalam sebuah emulator, tetapi itu tidak memiliki aplikasi Facebook inbuilt diinstal.

Ini kode saya:

if (FB_APP_ID == null) {
    Builder alertBuilder = new Builder(this);
    alertBuilder.setTitle("Warning");
    alertBuilder.setMessage("A Facebook Applicaton ID must be " +
                            "specified before running this example: see App.java");
    alertBuilder.create().show();
}

// Initialize the dispatcher
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);

// If a session already exists, render the stream page
// immediately. Otherwise, render the login page.
Session session = Session.restore(this);
if (session != null) {
    dispatcher.runHandler("stream");
}
else {
    dispatcher.runHandler("login");
}
Android
sumber
12
tapi itu berjalan dengan baik untuk pertama kalinya ligin tidak berfungsi jika saya masuk setelah keluar
Android
1
ya saya miliki .. dibuat menggunakan try {PackageInfo info = getPackageManager (). getPackageInfo ("com.facebook.samples.hellofacebook", PackageManager.GET_SIGNATURES); untuk (tanda tangan: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); }
Android
1
Saya menangani masalah ini di sini! Di sini dimengerti keren! [ Stackoverflow.com/questions/5306009/... ] [1]
Madi
3
@ Android Meskipun ini sudah tua, tetapi saya harus menyebutkan ini. Ini tidak terjadi ketika pengguna keluar lalu masuk. Ini terjadi ketika Anda men-debug kedua kalinya yaitu menginstal ulang aplikasi saat debugging. Jadi, hash berubah. Ini tidak terjadi dalam kasus aplikasi yang ditandatangani (siap produksi)
Nilay Vishwakarma
1
Apakah Anda mendapatkan kesalahan yang sama jika Anda menghapus aplikasi Facebook? Saya menguji dari dua ponsel dan kesalahan ini hanya terjadi ketika Aplikasi Facebook diinstal.
Jaime Montoya

Jawaban:

274

Kunci hash yang dihasilkan salah. Anda bisa mendapatkan kunci hash menggunakan dua langkah.

Salah satunya adalah melalui command prompt. Satu lagi adalah melalui coding. Kunci hash melalui prompt perintah hanya berfungsi pada saat pertama. Saya tidak tahu alasannya. Saya juga punya masalah yang sama. Jadi saya mencobanya secara terprogram.

Ikuti langkah ini:

Rekatkan kode berikut ini oncreate().

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.example.packagename",
                           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) {
}

Ubah "com.example.packagename" dengan nama paket Anda dalam pengkodean di atas tanpa gagal (Anda dapat menemukan nama paket Anda di file manifes Android).

Jalankan aplikasi Anda. Buka aktivitas di mana Anda menempelkan kode di atas. Di file LogCat, cari "KeyHash". Anda dapat menemukan hash utama. Salin hash utama dan buka halaman dasbor aplikasi Facebook. Buka pengaturan dan masukkan detail seperti pada gambar di bawah ini.

Masukkan deskripsi gambar di sini

Setelah Anda menyelesaikan langkah di atas, jalankan ulang aplikasi lagi. Anda sekarang dapat masuk ke Facebook. Untuk detail lebih lanjut tentang hash kunci, periksa tautan .

Jika Anda menambahkan informasi yang salah di halaman pengaturan, itu berarti akan memberikan beberapa kesalahan. Jadi gunakan informasi yang benar di sana. Dan juga jika publik (selain Anda) perlu menggunakan aplikasi Anda berarti Anda harus mengaktifkan izin (ubah "ya" di "Status & Tinjauan" di sebelah pengaturan) .

Mahendran Sakkarai
sumber
20
Dengan cara ini, kemungkinan besar Anda mendapat hash kunci untuk debug keystore. Ini bekerja untuk Anda dalam mode pengembangan, tidak perlu bekerja untuk mode produksi Anda. Paling tidak, itu tidak berfungsi untuk aplikasi produksi saya.
Liangjun
3
terima kasih telah menghemat banyak waktu saya ... facebook resmi doc seharusnya tidak membacanya omong kosong
DjP
Terima kasih banyak bung!
KinGPinG
Hai dengan kode ini PackageInfo info = getPackageManager (). GetPackageInfo ("com.example.packagename", PackageManager.GET_SIGNATURES); untuk (tanda tangan: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); kunci hash yang berbeda dikirim sementara ketika saya menjalankan perintah dalam cmd di windows kunci hash saya berbeda dan saya telah menambahkannya di FB tetapi log tetap menunjukkan hash dari kode program
Sagar Devanga
1
Menyelamatkan saya banyak waktu. Masih yang terbaik. Periksa verbose untuk keyhash dan salin dan tempel di halaman pengembang facebook. Jangan salah mengetiknya secara manual! Juga, pahami bahwa keyhash berubah setiap kali Anda mencopot dan memasang aplikasi.
sanjeev
188

Jika Anda menggunakan penandatanganan Aplikasi Google Play:

Buka bagian penandatanganan aplikasi di Google Play Console, dan dapatkan hash SHA-1 di bawah sertifikat penandatanganan aplikasi . Kemudian konversikan ke Base64 , misalnya dengan alat ini: Hexadecimal -> base64 decoder string

Tangkapan layar konsol

Konversikan ke tangkapan layar Base64

Rafal Malek
sumber
14
Pak! Anda adalah penyelamat! Banyak cinta. Saya menggunakan penandatanganan Play Store sementara saya telah menempatkan hash dari kunci rilis lokal saya di konsol facebook.
Taha Rushain
4
Anda menyelamatkan hidup saya, saya menggunakan reaksi, tidak ada yang menyebutkan tentang penandatanganan aplikasi play store
TomSawyer
7
Terima kasih! Berhasil! Anda juga dapat menggunakan perintah terminal untuk itu: echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
Yuriy Seredyuk
4
Inilah yang perlu dilakukan untuk lingkungan Produksi !!! Jempolan!
Bikey
Apa yang ingin saya ketahui. Perubahan Hashkey dalam debug setiap kali Anda menghapus dan menginstal aplikasi. Untuk apk yang ditandatangani ini menjadi solusi terbaik! Anda membuat hidup jadi lebih mudah, terima kasih!
sanjeev
123

Jika Anda menghadapi masalah ini maka masukkan kunci ini ke developer.facebook.com Anda :

Masukkan deskripsi gambar di sini

Kemudian pastikan aplikasi Anda tayang langsung di developer.facebook.com .

Lingkaran hijau ini menunjukkan aplikasi sedang aktif:

Masukkan deskripsi gambar di sini

Jika tidak, ikuti dua langkah ini untuk menjadikan aplikasi Anda aktif:

Langkah 1 Buka aplikasi Anda → pengaturantambahkan Email Kontak dan terapkan Simpan Perubahan.

Langkah 2 Buka opsi App Review dan pastikan toggle ini Ya . Saya menambahkan tangkapan layar:

Masukkan deskripsi gambar di sini

Catatan: Jika Anda ingin menyalin hashkey, periksa BlueServiceQueue di LogCat .

Arpit Patel
sumber
5
Apakah ada cara mudah untuk menyalin hash dari telepon?
Daniel Shatz
4
@DanielShatz muncul di logcat. Saya baru tahu setelah saya menyalinnya surat demi surat.
Alaa M.
4
@DanielShatz Cari tag BlueServiceQueuedi logcat
Alaa M.
4
Jawaban ini berhasil untuk saya. Setelah beberapa upaya mengetik hash secara manual itu memberi saya kesalahan yang sama, masalahnya adalah, saya mengetik huruf i "I" bukannya huruf kecil L "l". Butuh waktu untuk menyadari hal ini.
Markus
1
Ini bekerja tetapi saya bertanya-tanya dari mana FB mendapatkan kunci hash ini? Tidak ada yang bertanya-tanya? Kesalahannya adalah menampilkan kunci hash yang berfungsi baik, tetapi bahkan dengan semua perintah, atau mendapatkan sha1 ke base64 dari penandatanganan aplikasi google memberi saya kunci yang FB ditunjukkan dalam kesalahan ... Terima kasih atas triknya
Umar3x
82

Saya mendapat masalah yang sama. Saya yakin itu karena kesalahan yang sangat kecil dan ya itu!

Saya menemukan solusinya:

Saat membuat kunci hash debug di komputer saya, saya memasukkan kata sandi sistem saya. Tetapi kata sandinya harus sebagai berikut -

Masukkan kata sandi keystore: "android". Ini adalah satu-satunya masalah dalam kasus saya.

----- Untuk menghasilkan hash kunci Debug , gunakan perintah ini -

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

Masukkan kata sandi keystore: 'android'

----- Untuk Menghasilkan hash kunci Rilis , gunakan perintah ini -

keytool -exportcert -alias "alias of keystore" -keystore "Your path to the keystore when signing app" | openssl sha1 -binary | openssl base64

Berikan kata sandi keystore Anda setelah menjalankan perintah ini.

Akash Bisariya
sumber
5
menggunakan "android" karena kata sandi berfungsi untuk saya. ini membingungkan.
adbie
3
gunakan "android" ini sebagai kata sandi saat membuat kunci hash.
Akash Bisariya
2
pada mesin windows, pastikan variabel path diatur dengan benar untuk folder openssl \ bin dan java .. \ bin. Juga atur variabel HOMEPATH untuk dapat menggunakan perintah dari facebook.
KawaiKx
1
Setidaknya pada mac saya harus menginstal Java JDK agar ini berfungsi. Jika tidak, perintah debug di atas masih menghasilkan hash, tetapi hash tidak berfungsi dan Anda tidak akan diminta kata sandi. Dengan JDK diinstal ini bekerja seperti pesona.
lejonl
1
jawaban ini seharusnya JAWABAN YANG BENAR
Evan Ngo
20

Saya mengalami masalah yang sama. Saya melakukan riset singkat tentang kemungkinan alasan perilaku aneh ini dan saya menemukan yang berikut:

  • Selama eksekusi pertama aplikasi Facebook baru, itu akan memungkinkan koneksi / login bahkan jika Anda tidak menentukan hash kunci.

  • Bagi saya, tutorial yang disediakan Facebook tidak menghasilkan hash kunci yang benar, karena itu memberikan konfigurasi yang salah . Saat mengeksekusi:

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

pastikan Anda memeriksa semua properti - the HOMEPATH, keberadaan keystore, dll. Mungkin Anda juga harus memberikan kata sandi.

  • Apa yang menghasilkan konfigurasi yang tepat adalah solusi yang disarankan oleh @Mahendran .

  • Juga, jika Anda melihat kesalahan semula diposting ( http://i.stack.imgur.com/58q3v.png ), kemungkinan besar hash kunci yang Anda lihat di layar adalah kesalahan Anda yang sebenarnya. Jika tidak ada yang berhasil, coba masukkan di Facebook.

Saya mendapatkan semua hasil dengan: Windows 7 64-bit edition, Android Studio 1.2.2, JDK 7.

Martin Doychev
sumber
2
versi linux: `keytool -exportcert -alias androiddebugkey -keystore $ HOME / .android / debug.keystore | openssl sha1 -binary | openssl base64`
ruX
1
Cukup masukan apa yang ditunjukkan oleh facebook di layar perangkat, itu seharusnya berfungsi. Terima kasih atas catatan
@Martin
14

Menurut Facebook Login untuk Android , Anda harus memberikan nilai hash kunci. Untuk mendapatkannya, Anda perlu kunci yang digunakan untuk menandatangani aplikasi Anda.

keytool \
    -exportcert \
    -alias YourKeyAlias \
    -storepass YourStoreKeyPassword \
    -keystore PathToYourKeyStoreFile | openssl sha1 -binary | openssl base64
JP Ventura
sumber
1
hanya ingin menambahkan komentar, gunakan keystore produksi Anda.
Liangjun
2
@Liangjun Sebenarnya Anda harus menggunakan semua kunci Anda karena jika tidak, Anda tidak akan dapat menguji Facbeook Login di lingkungan debug.
Pijusn
2
@Pius, ya, saya benar-benar menggunakan kedua tombol. Saya seharusnya menyatakannya dengan jelas.
Liangjun
Saya mendapatkan kesalahan untuk perintah ini (Tidak ada Java runtime hadir, meminta instal.) Tetapi masih mendapatkan kunci juga, namun tidak valid dan saya hanya menyalin tempel yang dari logcat yang memberitahu saya tidak dikenali.
Cristi Băluță
8

Anda harus membuat dua hash utama, satu untuk Debug dan satu untuk Rilis.

Untuk Debug hash kunci :

Pada OS X, jalankan:

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

Di Windows, jalankan:

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

Sumber hash kunci debug

Untuk Rilis hash kunci :

Pada OS X, jalankan (ganti apa yang ada di antara <>nilai-nilai Anda) :

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

Di Windows, gunakan (ganti apa yang ada di antara <>nilai-nilai Anda) :

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

Lepaskan sumber hash kunci

MBH
sumber
Saya mendapatkan kesalahan untuk perintah ini (Tidak ada Java runtime hadir, meminta instal.) Tetapi masih mendapatkan kunci juga, namun tidak valid dan untuk membuatnya berfungsi saya hanya menyalin tempel yang dari logcat
Cristi Băluță
Mungkin Anda belum mengatur PATH java dan keytool di baris perintah? @ CristiBăluță
MBH
7

Saya mencoba semua jawaban sebelumnya dan tidak ada yang membantu kasus saya dengan klien saya!

Kemudian klien saya ingat dia menginstal Aplikasi Facebook di perangkatnya. Setelah dia menghapusnya. login berfungsi dengan baik.

Tombol hash telah diubah, dan saya telah mengganti kunci hash lama di Facebook Developers Console dengan kunci dari kesalahan (seperti yang disarankan di atas), dan berhasil!

Aplikasi Facebook itu sendiri mungkin menjadi masalah, jadi Anda sebaiknya mencari tahu ini di perangkat dengan aplikasi Facebook diinstal dan pada perangkat dengan aplikasi Facebook tidak diinstal dan menangani kedua kasus ...

Matan Dahan
sumber
Ya sama di sini saya mendapat kesalahan ini setelah menginstal aplikasi facebook di perangkat. Jadi saat ini saya meletakkan 2 kunci hash di pengaturan dev Facebook.
stuckedoverflow
3
Saya memiliki situasi yang sangat mirip dengan Anda. Hal yang membantu saya adalah masuk ke halaman FB Anda - Pengaturan - Aplikasi - Hapus aplikasi dari daftar. Ubah kunci hash dan instal ulang aplikasi fb dan aplikasi Anda. Dan sekarang berfungsi ...
anna_manzhula
4

Inilah cara saya memecahkan masalah ini:

Pertama, Anda harus mendapatkan nilai SHA-1. Untuk itu ada dua cara.

Untuk mendapatkan nilai SHA-1 di Android Studio.

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

ATAU

Untuk mendapatkan nilai SHA-1 dari file keystore .

keytool -list -v -keystore keystore_file_name.jks -alias key0

Salin nilai SHA-1 ke clipboard Anda seperti ini:

CD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84

Dan buka Hexadecimal -> Base64 decoder string untuk mengkonversi nilai SHA-1 Anda ke Base64.

Inilah yang dibutuhkan Facebook.

Dapatkan hash yang dihasilkan "******************** =" dan salin hash utama ke aplikasi Facebook.

Sajid Zeb
sumber
3

Saya mengalami masalah yang sama. Pertama masuk, baik-baik saja, tapi kemudian, hash kunci tidak valid.

Facebook SDK for Unity mendapatkan kunci hash yang salah. Ia mendapatkan kunci dari "C: \ Users \" your user ".android \ debug.keystore" dan, di dunia yang sempurna, itu harus mendapatkannya dari keystore yang Anda buat dalam proyek Anda. Itu sebabnya ia memberi tahu Anda bahwa hash kunci tidak terdaftar.

Seperti yang disarankan oleh Madi , Anda dapat mengikuti langkah-langkah pada tautan ini untuk menemukan kunci yang tepat. Pastikan untuk mengarahkan mereka ke keystore di dalam proyek Anda. Kalau tidak, Anda tidak akan mendapatkan kunci yang tepat.

Jefferson Suzuki Bitencourt
sumber
3

Kode berikut akan memberi Anda hash Anda untuk Facebook, tetapi Anda harus mengikuti langkah-langkah ini untuk mendapatkan hash kandidat rilis.

  1. Salin dan tempel kode ini dalam aktivitas utama Anda

    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                               "com.example.packagename",
                               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) {
    }
  2. Buat file APK yang ditandatangani .

  3. Hubungkan ponsel Anda ke laptop dan pastikan tetap terhubung.
  4. Instal dan jalankan file APK di ponsel Anda dengan memindahkan secara manual APK rilis ke ponsel Anda.
  5. Sekarang lihat Android LogCat (gunakan filter KeyHash:) . Anda harus melihat kunci hash rilis Anda untuk Facebook. Cukup salin dan tempel di https://developers.facebook.com/apps. Itu di bawah pengaturan.
  6. Sekarang Anda dapat menguji aplikasi itu harus berfungsi dengan baik.
abdul jalil
sumber
perhatikan kode hanya berfungsi jika Anda menghasilkan apk yang ditandatangani. jika tidak, itu hanya akan memberikan Anda hash debug apk yang tidak berguna untuk apk dirilis
abdul jalil
Hai, ketika saya memberikan hashkey yang dihasilkan ke aplikasi facebook itu berfungsi dengan baik tetapi ketika mencoba untuk menjalankan di perangkat lain itu lagi menunjukkan 'INVALID HASH KEY' bagaimana saya bisa mengatur kunci hash untuk isi buku wajah untuk bekerja di semua perangkat.
Deepak
2

Setelah riset panjang, kami menemukan solusi.

Kami telah menetapkan izin sebagai:

loginButton.setReadPermissions(public_profile email);

Ini bekerja untuk pertama kalinya, tetapi ketika kami login kembali ke Facebook, itu memberikan Kesalahan Hash Tidak Valid .

Solusi sederhana adalah mengubah baris di atas menjadi:

loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));

Dan itu bekerja seperti kebahagiaan!

Facebook harus mengembalikan pengecualian yang benar dan bukan kesalahan kunci hash yang menyesatkan.

pengguna3663906
sumber
Saya memiliki masalah yang sama. Saya mencoba solusi Anda tetapi masih tidak dapat menyelesaikan masalah saya @ user3663906
BekaKK
2

Setelah begitu banyak cobaan saya menemukan solusi untuk ini. Saya membuat dan menambahkan tombol debug dan lepaskan ke konsol pengembang Facebook dan masih mendapatkan kesalahan.

Satu-satunya solusi yang berfungsi untuk saya adalah menghapus program OpenSSL dari Google dan mengunduh dari Win32 / Win64 OpenSSL Installer untuk Windows

Ini benar-benar berfungsi seperti sihir.

Uchenna Nnodim
sumber
2

Meskipun pertanyaan ini telah dijawab dengan banyak cara yang membantu saya hanya ingin menambahkan bahwa ketika saya mengikuti Rafal Maleks menjawab (menggunakan kunci hash di Google Play Console) saya TIDAK dapat menggunakan kunci App Signing SHA1, masih mendapat generik kesalahan dari Facebook. Alih-alih, saya perlu menggunakan sidik jari sertifikat SHA-1 dari bagian Unggah Sertifikat (tepat di bawah bagian Penandatanganan Aplikasi di Google Play Console). Proses yang sama jika tidak;

  1. Salin sidik jari sertifikat SHA-1 dari bagian Unggah Sertifikat di Google Play Console

  2. Konversikan SHA-1 menggunakan: http://tomeko.net/online_tools/hex_to_base64.php dan salin hasilnya (base64)

  3. Rekatkan ke input Key Hash di developer.facebook.com dan simpan perubahan.

Semoga jawaban ini tidak berlebihan dan akan membantu seseorang yang tidak dapat membuatnya bekerja dengan sertifikat Penandatanganan Aplikasi.

Sekarang login Facebook berfungsi di aplikasi saya baik dalam mode debug dan rilis.

Ferenziz
sumber
1

Rekatkan kode berikut ke metode OnCreate Anda:

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.example.packagename",
                           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();
}

Cukup modifikasi nama paket. Lalu pergi ke file LogCat Anda dan pilih Pencarian debug di sini. Kemudian Anda akan menemukan kunci hash. Sekarang salin kunci hash ini dan kemudian pergi ke situs developer.facebook.app_id, edit kunci hash Anda, dan tekan Save. Sekarang jalankan proyek Android Anda lagi. Saya pikir masalah akan terselesaikan.

pavel_coder
sumber
7
mengulangi orang lain
Beto Caldas
1

Ini dapat membantu seseorang dengan masalah yang sama.

  1. Hasilkan hash kunci menggunakan kode di bawah ini

    keytool -exportcert -alias <your_keystore> alias -keystore <your_keystore_file> | openssl sha1 -binary | openssl base64

    Cara menggunakan keytool

  2. Rekatkan di bidang yang diperlukan di pengembang Facebook

  3. Di Android Studio, menu FileStruktur Proyek

    Masukkan deskripsi gambar di sini

    Tambahkan parameter penandatanganan.

  4. Pilih rasa

    Masukkan deskripsi gambar di sini

    Pilih konfigurasi penandatanganan yang kami buat.

  5. Pilih tipe bangunan

    Masukkan deskripsi gambar di sini

  6. Pilih varian build dan bangunlah

    Masukkan deskripsi gambar di sini

CLIFFORD PY
sumber
1

Saya memiliki masalah yang sama ketika saya sedang debug aplikasi saya. Saya telah menulis ulang hash yang telah Anda coret pada gambar terlampir (yang menurut Facebook tidak valid) dan menambahkannya di konsol pengembang Facebook ke hash utama. Berhati-hatilah dengan kesalahan ketik.

Solusi ini lebih seperti solusi mudah daripada solusi yang tepat.

Piotr Sagalara
sumber
1

Jika Anda mengetikkan keyhash secara manual (misalnya dari ponsel ke Facebook Dashboard), pastikan untuk membedakan antara huruf L kecil dan huruf kapital I.

Kashif Nazar
sumber
1
try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "www.icognix.infomedia",
                           PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        Log.d("YourKeyHash: ", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        Log.d("YourKeyHash: ", Base64.encodeToString(md.digest(), Base64.DEFAULT));
    }
}
catch (PackageManager.NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}
Zafar Husain
sumber
0

Apa yang digunakan Facebook bukanlah kata sandi dan alias default untuk debug. Anda perlu mengubahnya mengikuti dan itu akan berhasil.

/usr/lib/jvm/jdk1.8.0_66/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Jika Anda belum mengubah apa pun dengan kata sandi default, kata sandi itu seharusnya "android" .

Anda juga dapat mengkonfigurasinya di file build.gradle. Tetapi kata sandi alias yang sama harus digunakan untuk menghasilkan hash:

android {
    signingConfigs {
        release {
            storeFile file("~/.android/debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
}
abhi shukla
sumber
0

Inilah banyak jawaban yang benar. Hanya satu hal:

Rekatkan hash yang diterima ke dalam AplikasiPengaturanUtama , bukan melalui tutorial memulai cepat.

Membuang
sumber
0

Saya memiliki masalah yang sama.

Pastikan Anda membuat file APK dengan perangkat yang sama dengan hashkey yang disimpan di bagian pengembang Facebook.

nama generik
sumber
0

Saya memperbaikinya dengan menambahkan yang berikut ke MainApplication.onCreate:

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.genolingo.genolingo",
                           PackageManager.GET_SIGNATURES);

    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String hash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
        KeyHash.addKeyHash(hash);
    }
}
catch (PackageManager.NameNotFoundException e) {
    Log.e("PackageInfoError:", "NameNotFoundException");
}
catch (NoSuchAlgorithmException e) {
    Log.e("PackageInfoError:", "NoSuchAlgorithmException");
}

Saya kemudian mengunggah ini ke konsol pengembang Google dan kemudian mengunduh APK turunan yang, untuk alasan apa pun, memiliki hash kunci yang sama sekali berbeda.

Saya kemudian menggunakan LogCat untuk menentukan hash kunci baru dan menambahkannya Facebook seperti yang telah dijelaskan oleh pengguna lain.

Michael
sumber
0

Jika Anda membuat hash kunci rilis, pastikan Anda memasukkan kata sandi aktual dari keystore Anda dan tidak "android".

Ini masalah saya. Rilis debug bekerja, tetapi rilis APK tidak.

Sermilion
sumber
-1

Gunakan kode di bawah ini dalam metode onCreate () aktivitas Anda:

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

Jalankan kode ini. Ini akan menghasilkan kunci hash. Salin KeyHash ini di pengaturan aplikasi Facebook, dan simpan perubahan. Kemudian masuk ke aplikasi Anda. Ini akan bekerja dengan sempurna di masa depan juga.

Ashutoshg
sumber
3
mengulangi orang lain
Beto Caldas