Pertanyaan Aplikasi salah konfigurasi untuk login Facebook: Masalah integrasi Facebook Android


Saya telah mengintegrasikan aplikasi saya dengan Facebook, dan untuk ini saya menggunakan Facebook API Grafik. Saya sedang mengambil profil dan informasi teman. Ini berfungsi dengan baik pada perangkat saya yang telah Android 2.3 (Gingerbread), tetapi baru-baru ini klien saya menghadapi masalah ketika dia mencoba terhubung ke Facebook melalui aplikasi saya. Dia punya Android 4.0 (Ice Cream Sandwich) di perangkatnya. Ketika dia mengklik tombol di aplikasi yang membawanya ke layar login Facebook, setelah login dia mendapat pesan:

Aplikasi saya salah dikonfigurasi untuk login Facebook. Tekan Oke untuk kembali ke aplikasi tanpa terhubung ke Facebook.

Facebook error message

Saya tidak mendapatkan apa masalahnya apakah itu terkait dengan versi Android atau apa.

Bagaimana saya bisa memperbaiki masalah ini?


76
2017-09-12 06:46


asal


Jawaban:


Saya bekerja di Facebook, dan ini adalah masalah penting yang perlu ditangani. Jawaban lain untuk pertanyaan ini menunjukkan bahwa menonaktifkan SSO sangat buruk dan akan membuka aplikasi Anda ke aplikasi berbahaya yang dapat mencuri kredensial Facebook pengguna Anda.

Peretasan meluncurkan dialog WebView ke Facebook tanpa SSO, dan pengguna harus mengetikkan kredensial login mereka ke dalam dialog itu. Aplikasi berbahaya kemudian dapat mencuri informasi ini dengan mudah. Selalu disarankan untuk menerapkan SSO Facebook dengan benar untuk memastikan bahwa aplikasi Anda aman dan melindungi data sensitif pengguna Anda.

Sebelum menambahkan pesan kesalahan ini, dialog akan secara otomatis menutup tanpa peringatan dan gagal dalam diam. Kami menambahkan pesan kesalahan ini untuk menampilkan secara visual bahwa ada masalah dengan konfigurasi aplikasi Anda di dashboard aplikasi Facebook Anda. Untuk Android, jika Anda memeriksa LogCat, Anda akan melihat bahwa setelah menekan "Oke", harus ada pesan kesalahan yang akan menampilkan deskripsi yang lebih teknis dari apa yang menyebabkan otentikasi gagal.

Misalnya, jika Anda menggunakan contoh Hackbook kami dan tidak memberikan APP_ID Anda sendiri di sumbernya dan tidak menambahkan kunci hash ke dasbor, Anda akan melihat kesalahan ini di LogCat setelah menekan "Oke" di dialog SSO asli (jika Util.ENABLE_LOG diatur ke true):

D / Facebook-authorize (24739): Login gagal: invalid_key: Android key mismatch. Kunci Anda "uk3udeH7vrOGNFH2FJjdJbdWJWI" tidak cocok dengan kunci yang diizinkan yang ditentukan dalam pengaturan aplikasi Anda. Periksa pengaturan aplikasi Anda di http://www.facebook.com/developers

Kami menambahkan pesan kesalahan visual untuk membantu Anda. Ini, dalam teori, tidak merusak implementasi sebelumnya jika itu diterapkan dengan benar untuk memulai. Jika Anda melihat pesan kesalahan ini, itu berarti Anda tidak mengonfigurasi pengaturan aplikasi Anda dengan benar dasbor Anda.
Periksa kembali nama Kelas / Paket Android Anda, tombol hash Android, dll. Anda tidak akan melihat pesan ini jika Anda melakukan semuanya dengan benar.

kesimpulan, Anda mendapatkan pesan kesalahan karena ada masalah dengan konfigurasi aplikasi Anda, misalnya, ketidaksesuaian antara kunci hash Android di dasbor Anda. Sebelum Facebook menambahkan pesan kesalahan ini, dialog akan diluncurkan, kemudian secara otomatis menutup dan gagal. Untuk memperbaiki ini, periksa LogCat Anda untuk setiap pesan kesalahan dan pastikan bahwa Anda telah menerapkan semuanya dengan benar. Anda bisa membaca terus dokumentasi kami untuk memastikan Anda memiliki segalanya dengan benar. Jangan gunakan jawaban yang diterima untuk pertanyaan ini.

Anda juga bisa mengikuti laporan bug eksternal bahwa pengembang Facebook telah melaporkan untuk pembaruan lebih lanjut.


90
2017-09-15 02:01



Cobalah mengaturnya seperti ini:

Unduh pertama OpenSSL (jika Anda memiliki mesin 64-bit yang harus Anda unduh openssl-0.9.8e X64, bukan versi terbaru, openssl-0.9.8k X64, karena hasilnya tidak akan valid). Ekstrak file Anda, buat folder openssl, misalnya di C: / dan salin file di sana.

Temukan jalur Anda ke keytoo. Punyaku adalah C: \ Program Files \ Java \ jdk1.7.0_05 \ bin.

Temukan jalan Anda debug.keystore. Anda dapat melihat apa jalan jika Anda membuka Eclipse, menu Jendela -> Preferensi -> Android -> Membangun, dan kamu akan lihat Default keystore Debug:-dan jalan.

Temukan jalan Anda openssl. Punyaku adalah C: \ openssl8e \ bin /.

Buka cmd dan ketik:

"C: \ Program Files \ Java \ jdk1.7.0_05 \ bin \ keytool" -exportcert -alias androiddebugkey -keystore "C: \ Users \ User.android \ debug.keystore" | "C: \ openssl8e \ bin \ openssl" sha1 -binary | "C: \ openssl8e \ bin \ openssl" base64

Aand lalu tekan Memasukkan.

Masukkan kata sandi: android

Anda akan mendapatkan kunci hash Anda debug.keystore.

Ketika Anda mengekspor yang ditandatangani APK, dan Anda membuat keystore untuk aplikasi, cukup ganti dengan cmd debugkeystore alias dengan alias Anda untuk aplikasi, jalur keystore dengan jalur ke keystore yang baru dibuat untuk aplikasi dan masukkan kata sandi untuk Anda app.keystore, dan Anda akan mendapatkan kunci hash baru untuk aplikasi yang Anda tandatangani.


15
2017-09-23 14:24



Jawaban dari Jesse Chen baik-baik saja. SDK Facebook berfungsi dengan baik, jangan rusak.

Saya kembali mengalami masalah ini dan menemukan bahwa dokumentasi SDK Facebook dikoreksi dan sangat baik sekarang. Sekarang ini membimbing bagaimana cara men-debug dan melepaskan kunci hash dapat diatur; lakukan saja seperti yang dikatakan.

Di bawah ini adalah kisah lama saya. Ada yang hilang bahwa Anda dapat mengatur dua kunci hash, satu untuk debug dan satu untuk aplikasi yang ditandatangani, dirilis untuk yang lama Play Store.


Saya menemukan masalah itu adalah dalam kasus saya di dokumentasi SDK Facebook. Ini memandu kami untuk menggunakan hash kunci debug dan memasukkannya ke dalam konfigurasi aplikasi Facebook. Hash dipandu untuk mendapatkan cara ini:

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

Ini berfungsi dengan baik, ketika Anda men-dubugging atau menjalankan aplikasi dari Gerhana.

Tapi, jika Anda mempublikasikan aplikasi Anda ke Andoid Play, Anda harus menggunakan kunci penerbit Anda sendiri untuk mengekspor file .apk yang telah ditandatangani. Dengan itu .apk, hash di konsol aplikasi Facebook tidak berlaku lagi! Anda harus mendapatkan hash untuk kunci pengembang seperti ini:

keytool -exportcert -alias <developer alias> -keystore ~/.android/<developer keystore> | openssl sha1 -binary | openssl base64

Dan letakkan di Android Key Hash di konsol aplikasi Facebook untuk aplikasi yang Anda publikasikan. Setelah itu, SSO berfungsi baik lagi untuk file .apk yang Anda tandatangani.


12
2017-09-24 20:09



Dari apa yang saya dapat kumpulkan, itu adalah masalah Facebook dan telah dilaporkan. Namun, masalahnya tetap ada.

Cara sekitar ini (diuji pada 2.3.3) adalah dengan meretas SDK Facebook, mencari 2 mengizinkan metode dan mengubah DEFAULT_AUTH_ACTIVITY_CODE untuk FORCE_DIALOG_AUTH. Ini akan menonaktifkan fitur Single Sign On.

Jika suka Anda harus

public void authorize(Activity activity, String[] permissions,
            int activityCode, final DialogListener listener) 

dan nonaktifkan startSingleSignOn bagian. Lebih baik tidak, karena pada akhirnya Facebook akan menyelesaikan masalah, dan Anda hanya perlu mengembalikan konstanta lama.

EDIT

Solusi ini menimbulkan masalah keamanan. Periksa jawaban Jesse Chen.


8
2017-09-12 16:34



Saya menghadapi masalah yang sama, setelah menghabiskan 24 jam dan banyak pencarian, kami menggunakan metode ini untuk memecahkan masalah saya.

  1. Periksa pengidentifikasi bundel proyek Xcode Anda saat ini misalnya: com.perusahaanandaAnda.namaplikasiAnda

  2. gunakan pengenal berkas com.yourcompanyname.yourappname yang sama untuk membuat aplikasi di Facebook lihat lampiran.

enter image description here


5
2017-12-21 05:02



Saya memiliki masalah ini hanya beberapa menit yang lalu saya sendiri pada 4.0.4 dan tampaknya telah menyelesaikan sendiri.


3
2017-09-12 13:03



Meski terlambat, masih berguna: *Berikut adalah cara corerct untuk melakukan (untuk kunci debug, ubah sesuai untuk rilis):*

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\<User>\.android\debug.keystore" > <Drive letter>:\debug.txt
openssl sha1 -binary "<Drive letter>:\debug.txt" > "<Drive letter>:\debug_sha.txt"
openssl base64 -in "<Drive letter>:\debug_sha.txt" > "<Drive letter>:\debug_base64.txt"

Hash adalah file yang dihasilkan terakhir: debug_base64.txt .... buka dan salin hash.

Ingat untuk mengganti "" dan dengan nama pengguna dan huruf drive pilihan Anda


3
2018-01-24 04:05



Saat Anda membuat kunci hash, Anda mungkin akan berakhir dengan sesuatu yang memiliki tanda kesetaraan "=" di bagian akhir, seperti ga0RGNYHvNM5d0SLGQfpQWAPGJ8 =. Meskipun Facebook dengan senang hati menerima tanda kesetaraan sebagai bagian dari hash kunci, Anda harus menghapusnya agar berfungsi.

Selain itu, periksa jawaban yang diterima Android Facebook SDK 3.0 memberi "remote_app_id tidak cocok dengan id yang disimpan" saat masuk: saat mendapatkan kunci hash untuk keystore debug, gunakan kata sandi "android". Jika tidak, kunci hash akan salah dan Anda akan mendapatkan kesalahan yang ditentukan dalam pertanyaan (bersikaplah baik dan berikan jawaban jika ada yang membantu Anda.)


2
2017-12-27 10:48



Mengenai aplikasi yang ditandatangani dengan keystore OWN: Setelah menghabiskan beberapa jam untuk memecahkan masalah ini, saya akhirnya mendapatkannya dan ingin memberikan jawaban bagi mereka yang masih menderita:

Langkah saya: Saya menandatangani aplikasi saya melalui gerhana dengan file keystore saya sendiri (BUKAN debug.keystore). Melalui baris perintah dan perintah yang dikenal (keytool -exportcert -alias -keystore ~ ​​/ .android / | openssl sha1 -binary | openssl base64) Saya berhasil menerima kunci hash. Menempelkan kunci hash di dasbor dev, menunggu beberapa menit -> Masih ERROR yang sama (sebagaimana ditentukan dalam pertanyaan di atas). saya mencoba beberapa keytools differend, pada beberapa jdks, dll ... tidak ada yang berubah.

Larutan: Saya mengaktifkan debug dalam manifes, menyalakan debug di sdk facebook. lalu saya menandatangani apk dengan keystore saya sendiri dan mengunggahnya ke perangkat yang sebenarnya. saya menghubungkan perangkat melalui usb dan membuka perspektif DDMS untuk melihat logcat di perangkat.
Saya memulai aplikasi saya dan membiarkan pesan kesalahan terjadi. Ini mencetak kunci yang sangat berbeda dari kunci yang dihasilkan oleh keytool. Saya mengambil kunci ini dari logcat, ditempelkan ke dasbor dev dan voila -> SEMUA KARYA

Saya masih tidak tahu mengapa ini terjadi atau apa yang menyebabkan kunci yang salah, tetapi cara ini berhasil untuk saya.


1
2017-10-05 00:15