2012-05-09 51 views
9

Tôi đang xây dựng một ứng dụng, sẽ hỗ trợ cho facebook. Tôi đã tải về facebook API và mẫu của họ được gọi là "Hackbook" từ bản gốc Git repos. Vấn đề là đăng nhập - nếu ứng dụng FB ban đầu không được cài đặt trên điện thoại, đăng nhập sẽ thông qua hộp thoại tùy chỉnh và mọi thứ hoạt động, nhưng nếu ứng dụng FB được cài đặt, Hackbook sẽ tự động chuyển hướng đến ứng dụng FB ban đầu và sau đó không có gì xảy ra. Không thể đăng nhập. Tôi đã thử nghiệm điều này trên năm điện thoại khác nhau và luôn là vấn đề tương tự.Đăng nhập Facebook API không thành công với ứng dụng FB được cài đặt trên điện thoại

Trả lời

18

Tôi gặp sự cố tương tự. Trong trường hợp của tôi, tôi đã không tạo ra một khóa băm bằng cách sử dụng phím ký của tôi. Tôi vừa tạo khóa băm được tạo bằng cách sử dụng phím ký kết mặc định debug.keystore.

Ngay sau khi tôi tạo khóa băm bằng cách sử dụng khóa ký phát hành ứng dụng của tôi, vấn đề đó đã được sắp xếp. Nếu bạn chưa làm điều này, hãy tạo một khóa băm mới bằng cách sử dụng khóa ký tên của bạn (để tải lên trên thị trường) và thêm nó vào bảng điều khiển facebook của ứng dụng của bạn.

Hy vọng điều này sẽ hữu ích.

+0

Tôi đã thêm khóa băm đó vào bảng điều khiển, nhưng sự cố vẫn còn ở đây. Tôi có phải thêm khóa băm vào fb api ở đâu đó không? – virusss8

+2

@ virusss8: Bạn không cần phải thêm hàm băm trong ứng dụng của mình. Thực hiện theo bước này và cho tôi biết kết quả. Mở tập tin lớp Util trong facebook-sdk của bạn và thay đổi 'private static boolean ENABLE_LOG = false' thành 'true'. Bây giờ hãy giữ điện thoại của bạn kết nối với PC phát triển của bạn và chạy ứng dụng được tạo bằng cách sử dụng apk đã ký và đăng nhập. Hãy mở cửa sổ DDMS và xem có tạo ra lỗi không. –

+0

D/Facebook ủy quyền (25124): Đăng nhập không thành công: invalid_key: Phím Android không khớp. Khóa "********* real * key ************" 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 nhưng tôi chưa bao giờ đặt khóa đó ở bất kỳ đâu. Chìa khóa là gì ??? – virusss8

4

Tôi đã làm việc vất vả trong hai ngày & có những giải pháp cuối cùng, đây là WRONG cách để có được chìa khóa băm -

keytool -exportcert -alias *<your _alias_name>* -keystore *<key_store_path>* | [openssl_bin_directory]\openssl sha1 -binary | [openssl_bin_directory]\openssl base64 

Các đúng cách là gõ 3 dòng này, một ở một thời gian trong cmd. Sau dòng đầu tiên, bạn sẽ được yêu cầu chèn mật khẩu kho khóa.

keytool -exportcert -alias *<your _alias_name>* -keystore *<key_store_path>* > [openssl_bin_directory]\debug.txt 
[openssl_bin_directory]\openssl sha1 -binary [openssl_bin_directory]\debug.txt > [openssl_bin_directory]\debug_sha.txt 
[openssl_bin_directory]\openssl base64 -in [openssl_bin_directory]\debug_sha.txt > [openssl_bin_directory]\debug_base64.txt 

Nếu bạn muốn biết chi tiết, các QUYỀN cách được mô tả ở đây -

http://facebook.stackoverflow.com/questions/13281913/app-is-misconfigured-for-facebook-login-with-release-key-hash

hay đây

Facebook Android Generate Key Hash

+1

Tại sao bạn đăng sai văn bản chứ không phải quyền? Tôi gần như sử dụng nó lol nhưng nhờ liên kết đến một bên phải – Guardanis

+2

@Cruceo, tôi đã chỉnh sửa bài đăng, bạn có thể cung cấp +1 nếu bạn thích nó. – Khobaib

+0

CẢM ƠN QUÝ VỊ chỉ dành 3 giờ đồng hồ để tìm ra điều này –

1

Giúp bạn có được băm chìa khóa sử dụng chức năng này cho cả hai (gỡ lỗi và phát hành apk) và đặt nó trong ứng dụng của bạn trong developer.facebook.com/a pps

private void calculateHashKey(String yourPackageName) { 
    try { 
     PackageInfo info = getPackageManager().getPackageInfo(
       yourPackageName, 
       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(); 
    } 
} 

này giúp tôi rất nhiều .. Hy vọng điều này sẽ giúp bạn quá ..

1

Tôi đã cố định vấn đề này. Sau khi nhận được băm khóa bằng cách sử dụng keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64 Tôi đã đăng nhập lần đầu tiên ở chế độ phát hành thành công ... Sau đó, lần thứ hai tôi gặp lỗi phổ biến Khóa của bạn "*********real*key************" 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.

Chỉ cần sử dụng số "*********real*key************" mà Facebook cung cấp trong thông báo lỗi Tôi đã đăng nhập thành công ngay trong chế độ phát hành. Vì vậy, hãy chắc chắn trong khi nhập phím này mà bạn sử dụng cùng một khóa chính xác. LETTERS I, small(L) i.e (l) sẽ khiến bạn gặp rắc rối. Tôi đã tạo hai khóa, trong khóa đầu tiên tôi đã sử dụng small(L) i.e (l) và trong khóa thứ hai tôi đã sử dụng I. và đặt các khóa này trong ứng dụng dành cho nhà phát triển.
Hiện tại, điện thoại đang hoạt động ....

+0

Đó là vấn đề chính xác trong trường hợp của tôi .. giải pháp duy nhất đã hoạt động! và phần nhỏ 'L' là chính xác, và cũng lớn 'tôi' (có thể trông giống như chữ 'L' nhỏ trong một số phông chữ .. –

0

Trong trường hợp của tôi, sự cố đăng nhập người dùng bị hủy khi ứng dụng facebook được cài đặt trên thiết bị ngay cả sau khi tạo phím phải.

Tôi đã thêm dòng sau trước khi đăng nhập và nó hoạt động tốt.

LoginManager.getInstance().logOut(); 
Các vấn đề liên quan