Câu hỏi Ứng dụng bị định cấu hình sai cho đăng nhập Facebook: Sự cố tích hợp Facebook trên Android


Tôi đã tích hợp ứng dụng của mình với Facebook và vì điều này tôi đang sử dụng Facebook API đồ thị. Tôi đang truy xuất thông tin tiểu sử và bạn bè. Nó hoạt động tốt trên thiết bị của tôi Android 2.3 (Gingerbread), nhưng gần đây khách hàng của tôi đã gặp phải vấn đề trong khi anh ấy đang cố gắng kết nối với Facebook thông qua ứng dụng của tôi. Anh ấy có Android 4.0 (Ice Cream Sandwich) trên thiết bị của anh ấy. Khi anh ấy nhấp vào một nút trên ứng dụng đưa anh ấy đến màn hình đăng nhập Facebook, sau khi đăng nhập anh ấy nhận được một tin nhắn:

Ứng dụng của tôi bị định cấu hình sai cho đăng nhập Facebook. Nhấn OK để quay lại ứng dụng mà không cần kết nối với Facebook.

Facebook error message

Tôi không nhận được vấn đề là liệu nó có liên quan đến phiên bản Android hay không.

Làm cách nào để khắc phục sự cố này?


76
2017-09-12 06:46


gốc


Bạn có chắc chắn nó không liên quan đến SSO? Tôi đã có cùng một vấn đề mà nó hoạt động tốt khi ứng dụng FB không được cài đặt, nhưng khi ứng dụng FB được cài đặt, tôi đã nhận được lỗi ở trên. - Christer Nordvik
@ AB1209, câu trả lời được chấp nhận là câu trả lời không chính xác cho câu hỏi của bạn. Vui lòng xem bên dưới để biết câu trả lời của tôi và không sử dụng câu trả lời được chấp nhận làm giải pháp của bạn. - Jesse Chen
@ JesseChen, Cảm ơn bạn rất nhiều vì đã hướng dẫn. - AB1209
@ AB1209 hii bạn có thể không chấp nhận câu trả lời nếu một số cơ thể muốn biết rằng họ có thể làm điều đó một cách sai lầm ... - BBdev
Thật vậy, lỗi này cũng xảy ra trong các mẫu SDK của Facebook! Đi con số. - Igor Ganapolsky


Các câu trả lời:


Tôi làm việc tại Facebook, và đây là một vấn đề quan trọng cần được giải quyết. Câu trả lời khác cho câu hỏi này cho thấy rằng việc vô hiệu hóa SSO rất tệ và sẽ mở ứng dụng của bạn lên các ứng dụng độc hại có thể lấy cắp thông tin đăng nhập Facebook của người dùng của bạn.

Bản hack sẽ khởi chạy hộp thoại WebView trên Facebook mà không có SSO và người dùng phải nhập thông tin đăng nhập của họ vào hộp thoại đó. Các ứng dụng độc hại sau đó có thể lấy cắp thông tin này một cách dễ dàng. Bạn nên luôn thực hiện chính xác Facebook SSO để đảm bảo rằng ứng dụng của bạn an toàn và bảo vệ dữ liệu nhạy cảm của người dùng.

Trước khi thêm thông báo lỗi này, hộp thoại sẽ tự động đóng mà không có cảnh báo và không tự động. Chúng tôi đã thêm thông báo lỗi này để hiển thị trực quan rằng có sự cố với cấu hình ứng dụng của bạn trong trang tổng quan ứng dụng Facebook của bạn. Đối với Android, nếu bạn kiểm tra LogCat, bạn sẽ thấy rằng sau khi nhấn "OK", sẽ có một thông báo lỗi sẽ hiển thị mô tả kỹ thuật hơn về những gì gây ra xác thực thất bại.

Ví dụ: nếu bạn sử dụng ví dụ Hackbook của chúng tôi và không cung cấp APP_ID của riêng bạn trong nguồn và không thêm khóa băm vào trang tổng quan, bạn sẽ thấy lỗi này trong LogCat sau khi nhấn "Okay" trong hộp thoại SSO gốc (nếu Util.ENABLE_LOG được đặt thành true):

D / Facebook ủy quyền (24739): Đăng nhập thất bại: invalid_key: Phím Android không khớp. Khóa "uk3udeH7vrOGNFH2FJjdJbdWJWI" của bạn không khớp với các khóa được cho phép được chỉ định trong cài đặt ứng dụng của bạn. Kiểm tra cài đặt ứng dụng của bạn tại http://www.facebook.com/developers

Chúng tôi đã thêm thông báo lỗi hình ảnh để giúp bạn. Điều này, theo lý thuyết, không phá vỡ các triển khai trước đó nếu nó được triển khai chính xác để bắt đầu với. Nếu bạn thấy thông báo lỗi này, điều đó có nghĩa là bạn không định cấu hình chính xác cài đặt ứng dụng của mình trang tổng quan của bạn.
Kiểm tra kỹ tên Android Class / Tên gói, khóa băm Android của bạn, v.v. Bạn sẽ không thấy thông báo này nếu bạn đã làm mọi thứ chính xác.

Tóm tắt, bạn nhận được thông báo lỗi đó vì có sự cố với cấu hình ứng dụng của bạn, ví dụ: sự không khớp giữa các khóa băm Android trong trang tổng quan của bạn. Trước khi Facebook thêm thông báo lỗi này, hộp thoại sẽ khởi chạy, sau đó tự động đóng và thất bại. Để khắc phục điều này, hãy kiểm tra LogCat của bạn xem có bất kỳ thông báo lỗi nào không và đảm bảo rằng bạn đã thực hiện mọi thứ một cách chính xác. Bạn có thể đọc trên tài liệu của chúng tôi để đảm bảo bạn có mọi thứ chính xác. Không sử dụng câu trả lời được chấp nhận cho câu hỏi này.

Bạn cũng có thể theo dõi báo cáo lỗi bên ngoài mà nhà phát triển Facebook đã báo cáo để biết thêm thông tin cập nhật.


90
2017-09-15 02:01



Xin chào, đây là Shireesh từ Facebook. Tôi đồng ý với Jesse ở đây. Vui lòng không làm theo câu trả lời được chấp nhận ở đây. Đó chắc chắn là một vấn đề cài đặt với ứng dụng của bạn. Đừng đăng nhập lỗi và xem chi tiết. Nó sẽ giúp bạn khắc phục vấn đề trên cả Android cũng như iOS. - Shireesh Asthana
FWIW Tôi cũng có vấn đề này; Tôi giải quyết nó bằng cách loại bỏ tất cả các băm và xây dựng lại các dev và các khóa sản xuất của tôi và thêm chúng vào cổng thông tin fb dev. +1 cho câu trả lời này - Nirvana Tikku
Đã giải quyết vấn đề. Hơn bạn cho đầu vào. Tôi mới phát triển Android. Các giải pháp được cung cấp bởi tôi, "giải quyết" vấn đề nhưng cung cấp các vấn đề khác. - rmcc
Trong tình huống của tôi, đó là không gian tên ứng dụng ios không chính xác. - Almas Adilbek
Anh chàng này biết anh ta đang nói gì. Tôi đã có cùng một vấn đề này và thấy rằng mã thông báo / khóa / bất kỳ điều gì của tôi không chính xác do phiên bản openSSL không hợp lệ. một lần cố định, tin nhắn này biến mất. Cảm ơn Jesse! - Evan R.


Hãy thử thiết lập nó như thế này:

Tải xuống đầu tiên OpenSSL (nếu bạn có máy 64 bit, bạn phải tải xuống openssl-0.9.8e X64, không phải phiên bản mới nhất, openssl-0.9.8k X64, vì đầu ra sẽ không hợp lệ). Giải nén tệp của bạn, tạo thư mục openssl, ví dụ trong C: / và sao chép các tập tin ở đó.

Tìm đường dẫn đến keytoo của bạn. Mỏ của tôi là C: \ Program Files \ Java \ jdk1.7.0_05 \ bin.

Tìm đường đến debug.keystore. YHou có thể thấy đường dẫn là gì nếu bạn mở trong Eclipse, menu Cửa sổ -> Sở thích -> Android -> Xây dựngvà bạn sẽ thấy Mã khóa gỡ lỗi mặc định:- và con đường.

Tìm đường đến openssl. Mỏ của tôi là C: \ openssl8e \ bin /.

Mở cmd và gõ:

"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 sau đó nhấn Đi vào.

Chèn mật khẩu: android

Bạn sẽ nhận được khóa băm của bạn cho debug.keystore.

Khi bạn xuất khẩu một chữ ký APKvà bạn tạo kho khóa cho ứng dụng, chỉ cần thay thế bí danh debugkeystore cmd bằng bí danh của bạn cho ứng dụng, đường dẫn kho khóa có đường dẫn tới kho khóa mới được tạo của bạn cho ứng dụng và chèn mật khẩu cho app.keystorevà bạn sẽ nhận được khóa băm mới cho ứng dụng đã ký của mình.


15
2017-09-23 14:24



Một giải pháp đã làm việc cho tôi ... openssl-0.9.8e X64 là quan trọng. - Baseer
Tôi đã có vấn đề này, phiên bản k sản xuất một băm không hợp lệ. Cảm ơn bạn đã tìm thấy điều này! - SimpsOff
Tôi yêu bạn điều này chỉ giúp cuối cùng. - Prateek


Câu trả lời từ Jesse Chen là tốt. Facebooks SDK hoạt động tốt, không phá vỡ nó.

Tôi một lần nữa chạy vào vấn đề này và phát hiện ra rằng tài liệu Facebook SDK được sửa chữa và là rất tốt ngay bây giờ. Bây giờ nó hướng dẫn cách gỡ lỗi và giải phóng các khóa băm có thể được thiết lập; chỉ cần làm như nó nói.

Dưới đây là câu chuyện cũ của tôi. Có thiếu rằng bạn có thể thiết lập hai khóa băm, một cho gỡ lỗi và một cho ký, phát hành ứng dụng cho cũ Cửa hang tro chơi.


Tôi phát hiện ra rằng vấn đề  trong trường hợp của tôi trong tài liệu của SDK của Facebook. Nó hướng dẫn chúng tôi sử dụng băm khóa gỡ lỗi và đặt nó trong cấu hình ứng dụng của Facebook. Hash được hướng dẫn để có được theo cách này:

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

Điều này hoạt động tốt, khi bạn đang lồng tiếng hoặc chạy ứng dụng từ Eclipse.

Tuy nhiên, nếu bạn xuất bản ứng dụng của mình lên Andoid Play, bạn phải sử dụng khóa nhà xuất bản của riêng mình để xuất tệp .apk đã ký. Với điều đó .apk, băm trong bảng điều khiển ứng dụng Facebook không còn hợp lệ nữa! Bạn phải nhận được một băm cho khóa nhà phát triển như thế này:

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

Và đặt nó trong Android Key Hash trong bảng điều khiển ứng dụng Facebook cho ứng dụng đã xuất bản của bạn. Sau đó, SSO hoạt động tốt trở lại cho tệp .apk đã ký của bạn.


12
2017-09-24 20:09





Từ những gì tôi có thể thu thập, đó là một vấn đề của Facebook và đã được báo cáo. Nhưng, vấn đề vẫn tồn tại.

Một cách xung quanh điều này (thử nghiệm trên 2.3.3) là để hack trên Facebook SDK, tìm kiếm cho 2 cho phép phương pháp và thay đổi DEFAULT_AUTH_ACTIVITY_CODE đến FORCE_DIALOG_AUTH. Thao tác này sẽ tắt tính năng Đăng nhập một lần.

Nếu bạn thích có

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

và vô hiệu hóa startSingleSignOn phần. Tốt hơn là không nên, bởi vì cuối cùng Facebook sẽ giải quyết vấn đề, và bạn chỉ phải đặt lại hằng số cũ.

CHỈNH SỬA

Giải pháp này làm tăng các vấn đề về bảo mật. Kiểm tra câu trả lời của Jesse Chen.


8
2017-09-12 16:34



Điều này hoạt động thanks.But tôi hy vọng sớm Facebook sẽ giải quyết vấn đề. - AB1209
Tôi cũng mong là vậy. SSO cung cấp một chức năng tốt nhưng bị hỏng ... - rmcc
Xin chào mọi người, tôi làm việc tại Facebook và chúng tôi không khuyên bạn sử dụng hack này. Đây là mối quan tâm về bảo mật và có thể làm tổn hại đến thông tin đăng nhập Facebook của người dùng của bạn. Tôi đã đăng một câu trả lời kỹ lưỡng hơn bên dưới. - Jesse Chen


Tôi phải đối mặt với cùng một vấn đề, sau khi chi tiêu 24 giờ và rất nhiều tìm kiếm chúng tôi sử dụng phương pháp này để giải quyết vấn đề của tôi.

  1. Kiểm tra mã định danh gói hiện tại của dự án Xcode của bạn ví dụ: com.yourcompanyname.yourappname

  2. sử dụng cùng một tên com.yourcompanyname.yourappname để tạo ứng dụng trong Facebook, xem phần đính kèm.

enter image description here


5
2017-12-21 05:02



đây là ANdroid chứ không phải iOS - jesses.co.tt


Tôi đã có vấn đề này chỉ là một vài phút trước bản thân mình trên 4.0.4 và nó dường như đã giải quyết chính nó.


3
2017-09-12 13:03



Chính xác như vậy ở đây. Tôi nghĩ Facebook đang bị nấc cục. - Sander van't Veer
Stranger đây - một trong những thiết bị của tôi cho thấy vấn đề này. Các bản ghi khác vẫn ổn. Mã này là 100% giống nhau. Kể từ khi những thứ IPO của họ đã xuống dốc :) - Vaiden
Tôi có cùng một vấn đề. khi ứng dụng Facebook. được cài đặt thông báo này được hiển thị. - eyal


Mặc dù muộn, vẫn hữu ích: *Đây là cách corerct để làm (đối với khóa gỡ lỗi, thay đổi cho phù hợp để phát hành):*

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"

Hàm băm nằm trong tệp được tạo cuối cùng: debug_base64.txt .... mở nó và sao chép băm.

Hãy nhớ thay thế "" và bằng tên người dùng và ký tự ổ đĩa bạn chọn


3
2018-01-24 04:05





Khi bạn tạo băm khóa, bạn có thể kết thúc với một cái gì đó có dấu bằng "=" ở cuối, như ga0RGNYHvNM5d0SLGQfpQWAPGJ8 =. Trong khi Facebook sẵn sàng chấp nhận dấu bình đẳng như là một phần của khóa băm, bạn phải loại bỏ nó để nó hoạt động.

Ngoài ra, hãy kiểm tra câu trả lời được chấp nhận cho Android Facebook SDK 3.0 cung cấp "remote_app_id không khớp với id được lưu trữ" trong khi đăng nhập: khi nhận được băm khóa cho kho khóa gỡ lỗi, hãy sử dụng mật khẩu "android". Nếu không, khóa băm sẽ không chính xác và bạn sẽ nhận được lỗi được chỉ định trong câu hỏi (hãy đẹp và bỏ phiếu trả lời ở đó nếu nó giúp bạn).


2
2017-12-27 10:48





Về các ứng dụng được ký với kho khóa OWN: Sau vài giờ giải quyết vấn đề này, cuối cùng tôi đã nhận được nó và muốn cung cấp câu trả lời cho những người vẫn còn đau khổ:

Các bước của tôi: Tôi đã ký ứng dụng của mình qua nhật thực với tệp keystore của riêng tôi (NOT debug.keystore). Thông qua dòng lệnh và các lệnh đã biết (keytool -exportcert -alias -keystore ~ ​​/ .android / | openssl sha1 -binary | openssl base64) Tôi successfulluy đã nhận được băm khóa. Đã dán mã băm chính trong bảng điều khiển dev, đợi một vài phút -> Vẫn là ERROR giống nhau (như được chỉ định trong câu hỏi ở trên). tôi đã thử một số keytools differend, trên một số jdks, vv ... không có gì thay đổi.

Dung dịch: Tôi bật debuggable trong biểu hiện, bật gỡ lỗi trong facebook sdk. sau đó tôi đã ký apk với kho khóa của riêng mình và tải nó lên thiết bị thực. tôi kết nối thiết bị qua usb và mở DDMS phối cảnh để xem logcat trên thiết bị.
Tôi đã khởi động ứng dụng của mình và để thông báo lỗi xuất hiện. Nó in ra một khóa hoàn toàn khác với khóa được tạo ra bởi keytool. Tôi lấy chìa khóa này từ logcat, dán nó vào bảng điều khiển dev và voila -> HOẠT ĐỘNG MỌI NGƯỜI

Tôi vẫn không biết tại sao điều này xảy ra hoặc những gì gây ra chìa khóa sai, nhưng cách này nó làm việc cho tôi.


1
2017-10-05 00:15





Trên hệ thống Debian như ubuntu, hãy sử dụng keytool của java tìm thấy trong thư mục /usr/lib/jvm/jdk*.*.*/bin/keytool và tạo ra như thế này

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

Bằng cách này, bạn có được khóa băm xác thực có thể được đặt dưới băm ứng dụng của bạn trên facebook.


1
2017-12-16 09:08





Thông thường, vấn đề này có thể được giải quyết bằng hai lần kiểm tra:

  • cờ trong bảng điều khiển facebook để xuất bản trực tiếp cấu hình facebook
  • api mismatches không khớp

1
2018-01-13 14:52