2012-04-06 48 views
6

Trong Facebook android hướng dẫn cho chúng ta biết sử dụng đoạn mã sau để tạo một hash key:Làm thế nào để tạo một băm khóa Facebook?

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

Đây có phải là mã chính xác để sử dụng trong mọi trường hợp không? Ví dụ: thay vì ~/.android/debug.keystore nó có nên giống như C:/folderone/foldertwo/.android/debug.keystore không?

Như bạn có thể thấy tôi không chắc chắn liệu các dấu phẩy ngược có được yêu cầu hay không, cho dù đường dẫn đầy đủ có được yêu cầu hay không!

Có ai có thể cung cấp ví dụ về thế giới thực không?

Xem
https://developers.facebook.com/docs/mobile/android/build/#sso

+0

bạn cần có openssl từ google ... làm theo các bước được đưa ra trong [link] [1] [1]: http://stackoverflow.com/questions/4388992/key-hash- for-android-facebook-app/6665263 # 6665263 –

+0

Bạn có thể xem ví dụ thực tế tại đây http://stackoverflow.com/questions/9977492/android-facebook-sdk-keystore-not-asking-or-password/10026147#10026147 – dimetil

+0

Bạn sẽ tìm thấy câu trả lời của Avi [tại đây.] (Http://stackoverflow.com/a/6665263/5861880) – abosamy

Trả lời

2

Trong nhật thực, cửa sổ ->sở thích ->Android ->build ->debug mặc định keystore, sao chép đường dẫn đến thay thế ~/.android/debug.keystore

11

Bạn có thể tạo theo cách này

keytool -exportcert -alias androiddebugkey -keystore c:\Users\<your windows default user>\.android\debug.keystore | openssl sha1 -binary | openssl base64 

Nhập mật khẩu keystore: android

+0

Liên kết đã chết – larham1

+0

Thay đổi nhỏ ở đây. Trước hết, nếu openssl.exe của bạn không có trong PATH, bạn sẽ không thể gọi nó theo cách này (tương tự như đối với keytool). Thứ hai, phần cuối cùng là "openssl base64". – Asim

+0

MacOS: keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android/debug.keystore | openssl sha1 -binary | openssl base64 Mật khẩu: android –

1

tôi đã cùng một vấn đề, tôi dành một vài giờ để tìm một giải pháp, nhưng thực sự là Facebook SDK cung cấp các giải pháp của chính nó.

trong lớp DialogListener tôi sửa đổi phương pháp onFacebookError:

@Override 
public void onFacebookError(FacebookError error) { 
    Log.d("myTag",error.getmessage); 
} 

Thực hiện các ứng dụng (đó là dấu hiệu với phím cùng tôi sử dụng cho thị trường), và trên LogCat sẽ là một thông điệp dưới thẻ này với khóa chính xác.

Chúng tôi cũng đã tạo một dự án đơn giản thực hiện tất cả công việc và trả về khóa chính xác trên hộp cảnh báo và trên LogCat. Bạn có thể tìm thấy nó trên our blog.

16

thử

try { 
PackageInfo info = getPackageManager().getPackageInfo("com.eatapp", PackageManager.GET_SIGNATURES); 
for (Signature signature : info.signatures) { 
    MessageDigest md = MessageDigest.getInstance("SHA"); 
    md.update(signature.toByteArray()); 
    Log.e("MY KEY HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
} 
} catch (NameNotFoundException e) { 

} catch (NoSuchAlgorithmException e) { 

} 

trong Hoạt động chính của bạn :-) Đây là giải pháp duy nhất nó làm việc cho tôi dành cho Android SDK 3.0

+1

Bao gồm cần thiết: nhập android.content.pm.PackageInfo; nhập android.content.pm.PackageManager; nhập android.content.pm.PackageManager.NameNotFoundException; nhập android.content.pm.Signature; nhập android.util.Base64; nhập android.util.Log; – Alireza

1

keytool -exportcert -alias androiddebugkey -keystore "con đường debug.keystore" | openssl sha1 -binary | openssl base64

nếu bạn chưa thiết lập biến môi trường cho ssl và java sdk mở hơn đặt đường dẫn thư mục bin của jdk thay cho keytool và đường dẫn openssl của bạn thay cho openssl và không quên đặt dấu ngoặc kép cho đường dẫn của bạn

ví dụ: "C: \ Program Files \ Java \ jdk1.5.0_11 \ bin" -exportcert -alias androiddebugkey -keystore "C: \ Users \ amin.android \ debug.keystore" | "F: \ openssl \ binsha1 \ openssl.exe" -binary | "F: \ openssl \ binsha1 \ openssl.exe" base64

3
/** 
    * Generates the hash key used for Facebook console to register app. It can also be used for other sdks) Method copied from: https://developers.facebook.com/docs/android/getting-started/ 
    */ 
    public static String printHashKey(Context ctx) { 
     // Add code to print out the key hash 
     try { 
      PackageInfo info = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), PackageManager.GET_SIGNATURES); 
      for (Signature signature : info.signatures) { 
       MessageDigest md = MessageDigest.getInstance("SHA"); 
       md.update(signature.toByteArray()); 
       return Base64.encodeToString(md.digest(), Base64.DEFAULT); 
      } 
     } catch (NameNotFoundException e) { 
      return "SHA-1 generation: the key count not be generated: NameNotFoundException thrown"; 
     } catch (NoSuchAlgorithmException e) { 
      return "SHA-1 generation: the key count not be generated: NoSuchAlgorithmException thrown"; 
     } 

     return "SHA-1 generation: epic failed"; 
    } 
1

Một lựa chọn brute force là chỉ cần đi trước và cố gắng chia sẻ một cái gì đó từ ứng dụng của bạn. Ứng dụng của tôi sau đó sẽ hiển thị một trang Facebook với phím nó đang cố gắng để phù hợp. Sau đó, bạn chỉ có thể sao chép này chìa khóa và đặt nó trong trang 'Cài đặt' Facebook của bạn về phát triển của bạn tài khoản Facebook.

Không lý tưởng, nhưng trong một pinch nó có thể hữu ích.

2

khi có lỗi trong nhật ký, khi cố gắng đăng nhập vào Facebook, tìm kiếm một cái gì đó trông giống như:

Invalid key hash. The key hash *** does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/565561836797777 

trong đó "***" là khóa mà bạn cần sử dụng.

Các vấn đề liên quan