Ứng dụng được định cấu hình sai để đăng nhập Facebook: Vấn đề tích hợp Facebook trên Android


76

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 API Đồ thị của Facebook . Tôi đang lấy thông tin hồ sơ và bạn bè. Nó đang hoạt động tốt trên thiết bị của tôi có Android 2.3 (Gingerbread), nhưng gần đây khách hàng của tôi đã gặp sự cố khi anh ta đ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 mình. 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 sẽ nhận được thông báo:

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

Thông báo lỗi Facebook

Tôi không hiểu vấn đề là gì dù nó có liên quan đến phiên bản Android hay gì.

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


4
Bạn có chắc nó không liên quan đến SSO? Tôi đã gặp vấn đề tương tự trong đó 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 gặp lỗi ở trên.
Christer Nordvik

4
@ 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

2
@JesseChen, Cảm ơn bạn rất nhiều vì đã hướng dẫn.
Arun Badole

@ AB1209 hii có thể bạn chỉ unaccept câu trả lời nếu một số cơ thể muốn biết về điều đó họ có thể làm điều đó với một cách sai lầm ...
BBdev

1
Thật vậy, lỗi này cũng xảy ra trong các mẫu SDK của chính Facebook! Đi tìm con số.
IgorGanapolsky

Câu trả lời:


90

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 gợi ý rằng việc tắt SSO là rất xấu và sẽ mở ứng dụng của bạn đế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.

Vụ hack khởi chạy hộp thoại WebView tới 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 triển khai Facebook SSO một cách chính xác để đả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 hoạt động âm thầm. 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 bảng điều khiển ứng dụng Facebook của bạn. Đối với Android, nếu bạn kiểm tra LogCat của mình , bạn sẽ thấy rằng sau khi nhấn "OK", sẽ có thông báo lỗi hiển thị mô tả kỹ thuật hơn về nguyên nhân khiến xác thực không thành công.

Ví dụ: nếu bạn sử dụng ví dụ về 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 của bạn vào trang tổng quan, bạn sẽ thấy lỗi này trong LogCat sau khi nhấn "OK" trong hộp thoại SSO gốc (nếu Util.ENABLE_LOG được đặt thành true):

D / Facebook-allow (24739): Đăng nhập không thành công: invalid_key: Khóa Android không khớp. Khóa "uk3udeH7vrOGNFH2FJjdJbdWJWI" của bạn không khớp với các khóa được 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 trực quan để giúp bạn. Điều này, về 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 từ đầu . 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 trên trang tổng quan của mình .
Kiểm tra kỹ tên Gói / Lớp Android của bạn, các khóa băm Android, v.v. Bạn sẽ không thấy thông báo này nếu bạn đã làm đúng mọi thứ.

Tóm lại , bạn nhận được thông báo lỗi đó vì có vấn đề với cấu hình ứng dụng của bạn, chẳng hạn như sự không khớp giữa các phím 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 lại và không thành công. Để khắc phục điều này, hãy kiểm tra LogCat của bạn xem có thông báo lỗi nào không và đảm bảo rằng bạn đã triển khai mọi thứ một cách chính xác. Bạn có thể đọc tài liệu của chúng tôi để đảm bảo rằng 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.


5
Xin chào, đây là Shireesh từ Facebook. Tôi đồng ý với Jesse ở đây. Vui lòng không theo dõi câu trả lời được chấp nhận ở đây. Chắc chắn nhất là vấn đề cài đặt với ứng dụng của bạn. Ghi lại lỗi và xem chi tiết. Nó sẽ giúp bạn khắc phục sự cố trên cả Android cũng như iOS.
Shireesh Asthana

1
FWIW Tôi cũng gặp vấn đề này; Tôi đã giải quyết vấn đề này bằng cách xóa tất cả các hàm băm và xây dựng lại khóa nhà phát triển và khóa sản xuất của mình và thêm chúng vào cổng thông tin nhà phát triển fb. 1 cho câu trả lời này
Nirvana Tikku

1
Sự cố đã được giải quyết. Hơn bạn cho đầu vào. Tôi là người mới phát triển Android. Giải pháp do tôi cung cấp, "giải quyết" được vấn đề nhưng lại đưa ra các vấn đề khác.
rmcc

1
Ahhh, tôi tin rằng vấn đề của tôi là tôi chỉ có mã băm khóa phát hành trên ứng dụng Facebook của mình, nhưng tôi cũng cần phải bao gồm băm khóa gỡ lỗi, vì vậy khi tôi đang chạy ở chế độ gỡ lỗi, nó liên tục cho tôi lỗi đó. Mặc dù tôi chưa bao giờ có được logcat để cung cấp cho tôi thông báo rằng ...
WOUNDEDStevenJones

2
Anh chàng này biết mình đang nói về điều gì. Tôi cũng gặp sự cố này và nhận thấy rằng mã thông báo / khóa / bất kỳ thứ gì của tôi không chính xác do phiên bản openSSL không hợp lệ. sau khi sửa, thông báo này đã biến mất. Cảm ơn Jesse!
Evan R.

15

Hãy thử đặt nó như thế này:

Đầu tiên hãy tải xuống 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 các tệp của bạn, tạo thư mục openssl, chẳng hạn như trong C: / và sao chép tệp vào đó.

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

Tìm con đường của bạn đến debug.keystore. Bạn có thể thấy đường dẫn là gì nếu bạn mở trong Eclipse, menu Window -> Preferences -> Android -> Build , và bạn sẽ thấy kho khóa Default Debug: -và đường dẫn.

Tìm con đường của bạn đến openssl. 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

A và sau đó nhấn Enter.

Chèn mật khẩu: android

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

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


2
Một giải pháp phù hợp với tôi là ... openssl-0.9.8e X64 rất quan trọng.
Baseer

2
Tôi gặp sự cố này, phiên bản k tạo ra hàm băm không hợp lệ. Cảm ơn bạn đã tìm thấy điều này!
SimpsOff

2
Tôi yêu bạn điều này chỉ giúp ích cuối cùng.
Prateek

12

Câu trả lời từ Jesse Chen là ổn. SDK của Facebook hoạt động tốt, đừng phá vỡ nó.

Tôi lại gặp sự cố này và phát hiện ra rằng tài liệu SDK Facebook đã được sửa chữa và hiện rất ổn. Bây giờ nó đang 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òn thiếu rằng bạn có thể đặt hai khóa băm, một để gỡ lỗi và một cho ứng dụng đã ký, đã phát hành cho Cửa hàng Play cũ .


Tôi phát hiện ra rằng vấn đề xảy ra trong trường hợp của tôi trong tài liệu của SDK Facebook. Nó hướng dẫn chúng tôi sử dụng mã băm khóa gỡ lỗi và đưa nó vào cấu hình ứng dụng của Facebook. Hash được hướng dẫn để thực hiện 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 .apk đó, hàm 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 lấy một hàm băm cho khóa nhà phát triển như sau:

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 đối với tệp .apk đã ký của bạn.


8

Từ những gì tôi có thể thu thập được, đó 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 giải quyết vấn đề này (được thử nghiệm trên 2.3.3) là hack Facebook SDK, tìm kiếm 2 phương pháp cấp phép và thay đổi DEFAULT_AUTH_ACTIVITY_CODE thành 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 thì phải

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

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

BIÊN TẬP

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


Cảm ơn bạn, nhưng tôi hy vọng Facebook sẽ sớm giải quyết được vấn đề.
Arun Badole

4
Xin chào tất cả mọi người, tôi làm việc tại Facebook và chúng tôi không khuyến nghị các bạn sử dụng bản hack này. Đó là một mối lo ngại về bảo mật và có thể làm ảnh hưởng đế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

5

Tôi cũng gặp phải vấn đề tương tự, sau 24 giờ và tìm kiếm rất nhiều, chúng tôi sử dụng phương pháp này để giải quyết vấn đề của mình.

  1. Kiểm tra mã nhận dạng 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 mã định danh gói com.yourcompanyname.yourappname để tạo ứng dụng trong Facebook xem tệp đính kèm.

nhập mô tả hình ảnh ở đây


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

3

Tôi đã gặp sự cố này chỉ vài phút trước, trên 4.0.4 và nó dường như đã tự giải quyết.


Ở đây hoàn toàn giống nhau. Tôi nghĩ rằng Facebook đang gặp trục trặc.
Sander van't Veer

Người lạ ở đâ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ã giống nhau 100%. Kể từ khi IPO, mọi thứ của họ đã đi 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

3

Mặc dù muộn, vẫn hữu ích: * Đây là cách cốt lõi để làm (đối với khóa gỡ lỗi, hãy 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 .... hãy mở nó và sao chép hàm băm.

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


2

Khi bạn tạo khóa băm, bạn có thể kết thúc bằng thứ gì đó có dấu bằng "=" ở cuối, như ga0RGNYHvNM5d0SLGQfpQWAPGJ8 = . Mặc dù Facebook sẵn sàng chấp nhận dấu bằng như một phần của hàm băm khóa, nhưng bạn phải xóa nó đi để nó hoạt động.

Ngoài ra, hãy xem câu trả lời được chấp nhận cho Android Facebook SDK 3.0 là "remote_app_id không khớp với id được lưu trữ" trong khi đăng nhập : khi nhận được mã 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, hàm băm của khóa sẽ không chính xác và bạn sẽ gặp lỗi được chỉ định trong câu hỏi (hãy vui vẻ và bỏ phiếu cho câu trả lời ở đó nếu nó giúp ích cho bạn.)


1

Về các ứng dụng được ký bằng kho khóa RIÊNG: Sau khi dành vài giờ để giải quyết vấn đề này, cuối cùng tôi đã hiểu và muốn cung cấp câu trả lời cho những ai vẫn đang gặp phải:

Các bước của tôi: Tôi đã ký ứng dụng của mình qua eclipse bằng tệp kho khóa của riêng tôi (KHÔNG debug.keystore). Qua dòng lệnh và các lệnh đã biết (keytool -exportcert -alias -keystore ~ ​​/ .android / | openssl sha1 -binary | openssl base64) Tôi thành công đã nhận được mã băm khóa. Đã dán mã băm khóa vào bảng điều khiển nhà phát triển, đợi vài phút -> Vẫn LỖI như cũ (như đã nêu trong câu hỏi ở trên). tôi đã thử một số keytools khác nhau, trên một số jdks, vv ... không có gì thay đổi.

Giải pháp: Tôi đã bật gỡ lỗi trong tệp kê khai, bật gỡ lỗi trong sdk facebook. sau đó tôi đã ký apk bằng 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ở phối cảnh DDMS để xem logcat trên thiết bị.
Tôi đã khởi động ứng dụng của mình và để xảy ra thông báo lỗi. Nó in ra một khóa hoàn toàn khác với khóa được tạo bởi keytool. Tôi đã lấy khóa này từ logcat, dán nó vào bảng điều khiển nhà phát triển và thì đấy -> MỌI CÔNG VIỆC

Tôi vẫn không biết tại sao điều này xảy ra hoặc điều gì đang gây ra sai khóa, nhưng cách này phù hợp với tôi.


1

Trên hệ thống Debian như ubuntu sử dụng keytoolcủa javatìm thấy dưới thư mục /usr/lib/jvm/jdk*.*.*/bin/keytoolvà 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 sẽ có được khóa băm xác thực có thể được đặt dưới hàm băm ứng dụng của facebook.


1

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

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

1

Tôi đã cố gắng giải quyết vấn đề mà tôi gặp phải với việc định cấu hình sai cho Facebook trên Android bằng cách đảm bảo rằng tôi có khóa băm chính xác cho phiên bản phát hành.

Để nhận khóa băm của phiên bản phát hành, hãy tìm khóa bạn đã sử dụng để ký ứng dụng và thực hiện như sau, chèn tên bí danh kho khóa của bạn (không có dấu ngoặc). Nếu bạn không biết bí danh của mình, bạn có thể tìm thấy bí danh này bằng cách xuất ứng dụng của bạn dưới dạng ứng dụng đã ký và bí danh nằm trên trang thứ hai của trình hướng dẫn. Đồng thời chèn đường dẫn đến kho khóa của bạn (không có dấu ngoặc).

keytool -exportcert -alias [Alias of your keystore] -keystore [Path to keystore] | openssl sha1 -binary | openssl base64

0

Tôi đã thực hiện một Toasttrường hợp ngoại lệ và thấy nó ném một ngoại lệ khóa không khớp vào hôm nay đã thêm khóa vào FBtrang ứng dụng và nó hoạt động tốt


0

Cũng gặp phải vấn đề này.

Chỉ cần truy cập trang bắt đầu của nhà phát triển Facebook tại đây

và làm theo bước 4 - điều với dòng lệnh.

Đã làm cho tôi.

Thưởng thức.


0

Tôi vừa gặp vấn đề tương tự và giải pháp hóa ra cực kỳ đơn giản. Khi tôi tạo ứng dụng trong bảng điều khiển, tôi chỉ thêm khóa băm cho kho khóa gỡ lỗi android. Tất cả điều này hoạt động tốt nếu bạn cài đặt ứng dụng với tư cách là nhà phát triển thông qua cáp USB trong trường hợp này.

Sau khi có ứng dụng trong Cửa hàng Play, bạn sẽ sử dụng khóa sản xuất để ký ứng dụng. Điều này cũng có nghĩa là bạn phải lấy khóa băm của khóa sản xuất như khóa gỡ lỗi và thêm nó dưới dạng băm thứ hai vào danh sách băm ứng dụng gốc.

chỉ để bạn nhớ cách hoạt động của hàm băm khóa: keytool -exportcert -alias -keystore ~ ​​/ keys / android_keystore | openssl sha1 -binary | openssl base64

Hy vọng rằng sẽ giúp!


0

Tôi đã gặp sự cố tương tự, nhưng đối với iOS.

Giải pháp là thực hiện với việc định cấu hình ứng dụng Facebook trên Facebook developer daskboard.

Đối với iOS, phải thực hiện 2 điều:

  1. Đã bật Đăng nhập Facebook

  2. ID gói phải giống với ứng dụng


0

Đó là một vấn đề về kho khóa .. hãy định cấu hình nhật thực của bạn để sử dụng cùng một kho khóa mà ứng dụng đã được định cấu hình.


Tại sao nó sử dụng keyhash debug.keystore? Sau khi ứng dụng được phát hành, nó có phải sử dụng keyhash từ tệp kho khóa được sử dụng để ký ứng dụng không?
Rameez Hussain

0

Tôi gặp lỗi tương tự cách đây vài ngày. Trong trường hợp của tôi, đó là do khóa Android không khớp. Đây là cách tôi đã sửa nó nếu nó cũng có thể giúp bạn:

Mở Util.java trong SDK Facebook, thiết lập private static boolean ENABLE_LOG = true;. Bây giờ hãy chạy ứng dụng của bạn và nhập id email và mật khẩu của bạn. Facebook sẽ gửi lại chữ ký nếu có khóa không khớp. Bạn sẽ tìm thấy khóa (chữ ký) này trong LogCat . Chỉ cần sao chép khóa này và dán vào bảng điều khiển ứng dụng. Điều đó sẽ khắc phục vấn đề. Hãy nhớ đặt private static boolean ENABLE_LOG = true;lại thành false.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.